Was ist ein Reverse Proxy?
Ein Reverse Proxy ist ein Mittelsmann zwischen dem Client (Browser) und einem oder mehreren Backend-Servern. Während ein Forward Proxy die Anfragen der Clients nach außen bündelt, sitzt der Reverse Proxy vor deinen Servern und verteilt eingehende Anfragen. Nginx ist aufgrund seiner hohen Performance, des geringen Speicherverbrauchs und der flexiblen Konfiguration der beliebteste Reverse Proxy für Linux-Server. Er wird unter anderem von Netflix, GitHub und Airbnb eingesetzt.
Warum Nginx als Reverse Proxy?
- Performance: Nginx verarbeitet tausende gleichzeitige Verbindungen mit minimalem Ressourcenverbrauch – das event-getriebene Modell macht es möglich.
- SSL-Terminierung: Nginx übernimmt die SSL-Verschlüsselung und leitet entschlüsselten Traffic an die Backends weiter.
- Load Balancing: Verteile Anfragen auf mehrere Backend-Server – round-robin, least connections oder IP-hash.
- Caching: Statische Inhalte werden von Nginx zwischengespeichert, Backends werden entlastet.
- Sicherheit: Verstecke Backend-Strukturen, setze Zugriffsbeschränkungen und Rate-Limits.
Grundlegende Nginx Reverse Proxy Konfiguration
Die folgende Konfiguration leitet alle Anfragen an Port 80 an einen lokalen Backend-Service auf Port 3000 weiter. Erstelle eine neue Server-Datei unter /etc/nginx/sites-available/myapp:
server {
listen 80;
server_name example.de www.example.de;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Aktiviere die Seite mit ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/, teste die Konfiguration mit nginx -t und lade Nginx neu: systemctl reload nginx. Schon leitet dein Server alle Anfragen an deine Anwendung weiter.
SSL-Terminierung mit Let's Encrypt
Für eine sichere Verbindung per HTTPS ist ein SSL-Zertifikat Pflicht. Mit Certbot und Let's Encrypt erhältst du kostenlose, automatisierte Zertifikate. Zuerst installierst du Certbot, dann führst du folgenden Befehl aus:
certbot --nginx -d example.de -d www.example.de
Certbot passt die Nginx-Konfiguration automatisch an, richtet die Weiterleitung von HTTP auf HTTPS ein und kümmert sich um die automatische Verlängerung. Deine finale Konfiguration sieht dann so aus:
| Direktive | Wert | Erklärung |
|---|---|---|
listen 443 ssl; | http2 | HTTPS mit HTTP/2-Unterstützung |
ssl_certificate | /etc/letsencrypt/live/... | Pfad zum Let's Encrypt Zertifikat |
ssl_certificate_key | /etc/letsencrypt/live/... | Pfad zum privaten Schlüssel |
return 301 | https://$server_name$request_uri | HTTP-zu-HTTPS-Weiterleitung |
Load Balancing mit mehreren Backends
Ein großer Vorteil von Nginx als Reverse Proxy ist die integrierte Load-Balancing-Funktion. Verteile Anfragen auf mehrere identische Backend-Server:
upstream backend {
server 10.0.1.2:3000 weight=3;
server 10.0.1.3:3000 weight=2;
server 10.0.1.4:3000 backup;
}
server {
listen 80;
server_name example.de;
location / {
proxy_pass http://backend;
}
}
Nginx unterstützt verschiedene Load-Balancing-Methoden:
| Methode | Beschreibung |
|---|---|
round-robin (Standard) | Anfragen werden gleichmäßig verteilt |
least_conn | An den Server mit den wenigsten Verbindungen |
ip_hash | Client-IP-basiert – Sitzungen bleiben erhalten |
hash $request_uri | Basierend auf einem beliebigen Schlüssel |
Caching für bessere Performance
Nginx kann Antworten von Backends zwischenspeichern und statische Inhalte direkt ausliefern. Das entlastet deine Anwendungsserver und beschleunigt die Auslieferung enorm:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mycache:10m inactive=60m;
server {
location / {
proxy_cache mycache;
proxy_pass http://backend;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
add_header Cache-Control "public, immutable";
}
}
Sicherheitstipps für deinen Nginx Reverse Proxy
- Verstecke die Nginx-Version mit
server_tokens off; - Setze HTTP-Header wie
X-Content-Type-Options: nosniffundX-Frame-Options: DENY - Beschränke erlaubte HTTP-Methoden:
limit_except GET POST { deny all; } - Rate-Limiting mit
limit_req_zoneundlimit_req - Verwende moderne SSL-Ciphers und deaktiviere unsichere Protokolle (TLS 1.0/1.1)
Fehlerbehebung & Log-Analyse
Wenn etwas nicht funktioniert, helfen die Nginx-Logs weiter. Die wichtigsten Log-Dateien sind /var/log/nginx/access.log für alle Anfragen und /var/log/nginx/error.log für Fehlermeldungen. Mit dem Befehl tail -f /var/log/nginx/error.log verfolgst du Fehler live mit. Typische Probleme sind falsche proxy_pass-URLs, vergessene Semikolons oder Firewall-Regeln, die den Zugriff auf den Backend-Port blockieren.
Fazit
Nginx als Reverse Proxy ist eine der wertvollsten Techniken in der Server-Administration. Die Konfiguration ist nach kurzer Einarbeitungszeit gut verständlich, und die Vorteile – SSL-Terminierung, Load Balancing, Caching und Sicherheit – sind enorm. Mit diesem Guide hast du alle Grundlagen, um deinen eigenen Nginx Reverse Proxy für 2026 produktiv einzusetzen.