Webproxy mit nginx für HTTP und X.509 Zertifikate: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 23: Zeile 23:
  
 
== Grundlegende Proxy-Konfiguration ==
 
== Grundlegende Proxy-Konfiguration ==
* Beispielhafte Konfiguration für einen Reverse Proxy:
 
<pre>
 
server {
 
    listen 80;
 
    server_name proxy.example.com;
 
 
    location / {
 
        proxy_pass http://backend.local;
 
        proxy_set_header Host $host;
 
        proxy_set_header X-Real-IP $remote_addr;
 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 
    }
 
}
 
</pre>
 
* Datei speichern unter:
 
* sudo nano /etc/nginx/sites-available/proxy
 
* Aktivieren der Konfiguration:
 
* sudo ln -s /etc/nginx/sites-available/proxy /etc/nginx/sites-enabled/
 
* Nginx neu laden:
 
* sudo systemctl reload nginx
 
  
 
== TLS/SSL mit X.509-Zertifikaten ==
 
== TLS/SSL mit X.509-Zertifikaten ==
Zeile 67: Zeile 47:
 
* Nginx neu laden:
 
* Nginx neu laden:
 
* sudo systemctl reload nginx
 
* sudo systemctl reload nginx
 
== Automatische SSL-Zertifikate mit Let's Encrypt ==
 
* Certbot installieren:
 
* sudo apt install certbot python3-certbot-nginx
 
* Zertifikat ausstellen:
 
* sudo certbot --nginx -d example.com
 
* Automatische Erneuerung prüfen:
 
* sudo certbot renew --dry-run
 
  
 
== Zugriffsbeschränkung nach IP ==
 
== Zugriffsbeschränkung nach IP ==

Aktuelle Version vom 26. März 2025, 15:04 Uhr

Webproxy mit Nginx für HTTP und X.509-Zertifikate

Einführung

  • Nginx kann als Reverse Proxy für HTTP- und HTTPS-Dienste verwendet werden.
  • X.509-Zertifikate ermöglichen die TLS-Verschlüsselung für sichere Verbindungen.
  • Der Proxy kann Anfragen an interne Webserver weiterleiten und dabei SSL/TLS offloaden.

Installation von Nginx

Debian/Ubuntu

  • Nginx-Server installieren:
  • sudo apt update
  • sudo apt install nginx
  • Dienst starten und aktivieren:
  • sudo systemctl start nginx
  • sudo systemctl enable nginx

RHEL/CentOS

  • Nginx-Repository hinzufügen und installieren:
  • sudo dnf install nginx
  • Dienst starten und aktivieren:
  • sudo systemctl start nginx
  • sudo systemctl enable nginx

Grundlegende Proxy-Konfiguration

TLS/SSL mit X.509-Zertifikaten

  • Selbstsigniertes Zertifikat erstellen:
  • sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
  • Beispielkonfiguration mit TLS:
server {
    listen 443 ssl;
    server_name secure.example.com;

    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;

    location / {
        proxy_pass http://backend.local;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
  • Nginx neu laden:
  • sudo systemctl reload nginx

Zugriffsbeschränkung nach IP

  • Nur bestimmten IPs Zugriff gewähren:
location / {
    allow 192.168.1.100;
    deny all;
    proxy_pass http://backend.local;
}

Load Balancing mit Nginx

  • Mehrere Backend-Server verteilen:
upstream backend_servers {
    server backend1.local;
    server backend2.local;
}

server {
    listen 80;
    server_name loadbalancer.example.com;

    location / {
        proxy_pass http://backend_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Aufgaben

  • Richte einen Reverse Proxy für einen internen Dienst ein.
  • Konfiguriere TLS mit einem selbstsignierten Zertifikat.
  • Implementiere eine Zugriffsbeschränkung nach IP-Adresse.
  • Setze Load Balancing zwischen mehreren Backend-Servern um.

Fazit

  • Nginx ist ein leistungsfähiger Webproxy für HTTP und HTTPS.
  • TLS-Zertifikate bieten Sicherheit und Vertrauenswürdigkeit.
  • Load Balancing und Zugriffsbeschränkungen erhöhen die Skalierbarkeit und Sicherheit.