Ein Reverse Proxy nimmt Anfragen aus dem Internet entgegen und leitet sie an interne Dienste weiter – Nginx ist dafür der Klassiker. In dieser Anleitung zeigen wir dir Schritt für Schritt, wie du Nginx als Reverse Proxy konfigurierst: vom Server-Block über proxy_pass und die wichtigen Weiterleitungs-Header bis zum Aktivieren der Konfiguration.
- Was macht ein Reverse Proxy?
- Schritt 1: Nginx installieren
- Schritt 2: Einen Server-Block anlegen
- Schritt 3: Die Weiterleitungs-Header verstehen
- Schritt 4: Konfiguration aktivieren
- HTTPS nicht vergessen
- Mehrere Dienste unter Subdomains
- Häufige Fragen
- Warum bekomme ich einen 502 Bad Gateway?
- Nginx oder ein Tool wie Traefik/Caddy?
- Muss ich Nginx nach jeder Änderung neu starten?
- Fazit
Was macht ein Reverse Proxy?
Ein Reverse Proxy sitzt vor deinen Anwendungen und ist der einzige Dienst, der nach außen lauscht. Er nimmt HTTP(S)-Anfragen an und reicht sie intern an den passenden Dienst weiter – etwa eine App auf Port 3000 oder einen Docker-Container. Das bringt zentrale Vorteile: einheitliche TLS-Verschlüsselung, mehrere Dienste unter einer IP und ein zusätzlicher Schutzschild vor den Anwendungen.
Schritt 1: Nginx installieren
sudo apt update
sudo apt install -y nginxSchritt 2: Einen Server-Block anlegen
Konfigurationen liegen unter /etc/nginx/sites-available/. Lege eine Datei für deine Domain an:
sudo nano /etc/nginx/sites-available/app.example.deDer folgende Server-Block leitet alle Anfragen an einen lokal auf Port 3000 laufenden Dienst weiter:
server {
listen 80;
server_name app.example.de;
location / {
proxy_pass http://127.0.0.1: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;
}
}Schritt 3: Die Weiterleitungs-Header verstehen
Die proxy_set_header-Zeilen sind entscheidend, damit die Anwendung dahinter korrekt arbeitet:
| Header | Zweck |
|---|---|
Host | Übergibt den ursprünglich angefragten Hostnamen |
X-Real-IP | Die echte IP des Besuchers (statt der des Proxys) |
X-Forwarded-For | Kette aller weiterleitenden Proxys |
X-Forwarded-Proto | Ob die Anfrage per http oder https kam |
Ohne diese Header sieht die Anwendung nur den Proxy und generiert z. B. falsche Links oder Logs.
Schritt 4: Konfiguration aktivieren
Aktiviere die Seite per Symlink nach sites-enabled, prüfe die Syntax und lade Nginx neu:
sudo ln -s /etc/nginx/sites-available/app.example.de /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginxDer Test nginx -t ist Pflicht – er verhindert, dass ein Tippfehler den Webserver lahmlegt. Mehr dazu in Nginx Config aktivieren.
HTTPS nicht vergessen
Bisher läuft alles unverschlüsselt über Port 80. Für den produktiven Einsatz brauchst du ein TLS-Zertifikat – am einfachsten kostenlos über Let’s Encrypt mit Certbot, das die Nginx-Konfiguration sogar automatisch anpasst.
Mehrere Dienste unter Subdomains
Der eigentliche Nutzen zeigt sich, wenn du mehrere Anwendungen betreibst. Für jede Subdomain legst du einfach einen eigenen Server-Block mit passendem server_name und proxy_pass an. So laufen etwa cloud.example.de und blog.example.de über dieselbe IP, aber auf unterschiedlichen internen Ports. Nginx entscheidet anhand des angefragten Hostnamens, an welchen Dienst er weiterleitet.
Betreibst du Anwendungen mit Live-Verbindungen (etwa Chats oder Dashboards), brauchst du zusätzlich die WebSocket-Weiterleitung. Ergänze im location-Block proxy_set_header Upgrade $http_upgrade; und proxy_set_header Connection "upgrade";, damit die Verbindung nicht abbricht.
Häufige Fragen
Warum bekomme ich einen 502 Bad Gateway?
Das bedeutet, Nginx erreicht den Backend-Dienst nicht. Prüfe, ob die Anwendung wirklich auf der in proxy_pass angegebenen Adresse und dem Port läuft und nicht durch eine Firewall blockiert wird.
Nginx oder ein Tool wie Traefik/Caddy?
Nginx bietet volle Kontrolle per Textkonfiguration. Für dynamische Docker-Umgebungen ist Traefik bequemer, für minimale Konfiguration Caddy.
Muss ich Nginx nach jeder Änderung neu starten?
Nein, ein systemctl reload nginx genügt und lädt die Konfiguration ohne Verbindungsabbruch neu. Ein voller Neustart ist nur selten nötig.
Fazit
Mit einem sauberen Server-Block, proxy_pass und den richtigen Weiterleitungs-Headern ist Nginx als Reverse Proxy schnell eingerichtet. Denk an nginx -t vor jedem Reload und an ein TLS-Zertifikat für den Produktivbetrieb. Damit machst du beliebig viele interne Dienste sicher über eine Adresse erreichbar.

