VPS · Anleitung

nginx als Reverse Proxy: Anleitung

Aktualisiert October 11, 2026 5 Min. Lesezeit

Auf dieser Seite
  1. Was ein Reverse Proxy macht
  2. Schritt 1: nginx installieren
  3. Schritt 2: Den Proxy-Server-Block anlegen
  4. Die Header und der abschließende Schrägstrich
  5. WebSockets
  6. Schritt 3: Kostenloses HTTPS mit Certbot
  7. Fehler 502, 504 und 413 beheben
  8. Auf einem HytHost VPS betreiben
  9. FAQ

Ein Reverse Proxy steht vor deinen Anwendungen und leitet die Anfragen der Besucher an sie weiter. Mit nginx davor wird aus einer Node.js-App, einem Docker-Container oder einem Dashboard auf irgendeinem Port https://app.example.com – mit HTTPS, sauberen Headern und einer zentralen Stelle für die Verwaltung.

Diese Anleitung richtet nginx Schritt für Schritt als Reverse Proxy auf Ubuntu ein: Server-Block, Header, WebSockets, kostenloses HTTPS und die Fehler, denen du am ehesten begegnest.

Was ein Reverse Proxy macht

  • Ein öffentlicher Einstiegspunkt. nginx lauscht auf den Ports 80 und 443 und leitet jede Domain oder jeden Pfad an die richtige App weiter, sodass die Apps selbst nie direkt im Internet stehen.
  • HTTPS an einer Stelle. nginx kümmert sich um die Zertifikate; die Apps dahinter können auf localhost einfaches HTTP sprechen.
  • Mehrere Apps auf einem Server. app.example.com, api.example.com und example.com/blog können jeweils zu einem anderen Dienst führen.
  • Extras: Komprimierung, Caching, Upload-Limits und Zugriffsregeln, ohne die App anzufassen.

Schritt 1: nginx installieren

sudo apt update
sudo apt install nginx

Öffne http://your-server-ip, dann solltest du die Willkommensseite von nginx sehen. Wenn du ufw nutzt, erlaube Webverkehr mit sudo ufw allow 'Nginx Full'.

Stelle sicher, dass deine App läuft und auf dem Server selbst erreichbar ist, zum Beispiel mit curl http://127.0.0.1:3000. Schlägt das fehl, scheitert auch nginx.

Betreibe nginx und deine Apps mit vollem Root-Zugriff: HytHost KVM-VPS-Pakete ab €2.92/Monat.

VPS-Pakete ansehen

Schritt 2: Den Proxy-Server-Block anlegen

Unter Ubuntu bekommt jede Site eine Datei in /etc/nginx/sites-available/, aktiviert wird sie über einen Link in sites-enabled. Lege /etc/nginx/sites-available/app.example.com an:

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

    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;
    }
}

Aktiviere ihn, teste die Konfiguration und lade neu:

sudo ln -s /etc/nginx/sites-available/app.example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Richte den A-Record der Domain auf deinen Server, und http://app.example.com zeigt jetzt deine App. Führe vor jedem Neuladen nginx -t aus: So fallen Tippfehler auf, bevor sie die Site lahmlegen.

Die Header und der abschließende Schrägstrich

  • Host übergibt die Domain, die der Besucher aufgerufen hat. Ohne ihn sendet nginx die Adresse aus proxy_pass, und Apps, die Links aus dem Host bauen, funktionieren nicht mehr richtig.
  • X-Real-IP und X-Forwarded-For übergeben die IP-Adresse des Besuchers. Ohne sie sieht jede Anfrage so aus, als käme sie von 127.0.0.1.
  • X-Forwarded-Proto sagt der App, ob der Besucher HTTPS genutzt hat, damit sie nicht in einer Schleife umleitet.

Das nginx-Paket von Ubuntu liefert diese Zeilen in /etc/nginx/proxy_params mit, daher ist include proxy_params; eine Abkürzung.

Der abschließende Schrägstrich ist wichtig. Für eine App unter einem Pfad:

location /app/ {
    proxy_pass http://127.0.0.1:3000/;
}

Mit dem Schrägstrich nach dem Port kommt /app/login bei der App als /login an. Ohne ihn erhält die App den vollständigen Pfad /app/login.

WebSockets

Chat-Apps, Live-Dashboards und viele Admin-Panels nutzen WebSockets, die zwei zusätzliche Header brauchen. Füge diese map einmal im http-Block hinzu, zum Beispiel in einer neuen Datei /etc/nginx/conf.d/websocket.conf:

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

Dann in der location:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 1h;

nginx schließt eine weitergeleitete Verbindung, über die 60 Sekunden lang nichts kommt; der längere proxy_read_timeout hält ruhige WebSockets offen. proxy_http_version 1.1 ist erst ab nginx 1.29.7 Standard, und Ubuntu 24.04 liefert 1.24 aus – behalte die Zeile also.

Schritt 3: Kostenloses HTTPS mit Certbot

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
sudo certbot --nginx -d app.example.com

Certbot holt ein kostenloses Let's-Encrypt-Zertifikat, ergänzt die HTTPS-Einstellungen in deinem Server-Block und kann HTTP auf HTTPS umleiten. Das Zertifikat wird automatisch erneuert; prüfen kannst du das mit sudo certbot renew --dry-run. Mehr zu Zertifikaten in So bekommst du ein kostenloses SSL-Zertifikat.

Fehler 502, 504 und 413 beheben

FehlerÜbliche UrsacheLösung
502 Bad Gatewaynginx erreicht die App nicht: Sie ist gestoppt, abgestürzt oder lauscht auf einem anderen Port oder einer anderen AdresseStarte die App, prüfe den Port mit curl http://127.0.0.1:PORT, lies /var/log/nginx/error.log
504 Gateway TimeoutDie App hat länger als 60 Sekunden für die Antwort gebrauchtBeschleunige die Anfrage oder erhöhe proxy_read_timeout für diese location
413 Request Entity Too LargeEin Upload ist größer als das Standardlimit von nginx (1 MB)Setze client_max_body_size 50m; im Server-Block
UmleitungsschleifeDie App weiß nicht, dass der Besucher HTTPS genutzt hatÜbergib X-Forwarded-Proto und teile der App mit, dass sie hinter einem Proxy läuft

Nach jeder Änderung: sudo nginx -t, dann sudo systemctl reload nginx.

Auf einem HytHost VPS betreiben

Ein Reverse Proxy braucht einen Server, auf dem du die Ports 80 und 443 kontrollierst. HytHost VPS-Pakete laufen auf KVM mit vollem Root-Zugriff, SSD-Speicher und DDoS-Schutz; wähle Ubuntu 24.04 und folge den Schritten oben. Deine Apps laufen in Containern? Richte zuerst Docker mit So installierst du Docker auf Ubuntu ein und binde die Ports der Container an 127.0.0.1, damit nur nginx sie erreicht.

FAQ

Häufige Fragen

Ein Reverse Proxy leitet Anfragen an eine oder mehrere Apps dahinter weiter. Ein Load Balancer ist ein Reverse Proxy, der Anfragen auf mehrere Kopien derselben App verteilt. nginx kann beides, mit einem upstream-Block, der die Kopien auflistet.

nginx erreicht die App dahinter nicht. Prüfe, ob die App läuft und auf der Adresse und dem Port aus proxy_pass lauscht, und lies /var/log/nginx/error.log für den genauen Grund.

Nein, wenn die App auf demselben Server läuft. nginx übernimmt HTTPS für die Besucher und spricht mit der App über einfaches HTTP auf 127.0.0.1, das den Rechner nie verlässt.

Gib jeder App einen eigenen Server-Block mit eigenem server_name, etwa app.example.com und api.example.com, jeweils mit einem proxy_pass auf einen anderen Port.

Ja. Veröffentliche den Port jedes Containers nur auf 127.0.0.1 und richte proxy_pass darauf. So bleiben die Container aus dem öffentlichen Internet heraus – wichtig, weil veröffentlichte Docker-Ports ufw umgehen.

Hoste deine Apps hinter nginx

HytHost KVM-VPS-Pakete mit vollem Root-Zugriff, SSD-Speicher und DDoS-Schutz gibt es ab €2.92/Monat.

Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hours

War diese Anleitung hilfreich?