nginx als Reverse-Proxy
Du stellst nginx vor ein python3-Backend, das nur auf 127.0.0.1:9000 hört. Klassischer Web-Stack: Backend produziert Content, nginx kümmert sich um Port 80, Caching, Logs und SSL. Vier Aufgaben, ca. 40 Minuten. Vorstufe zum deploy-and-tls-Modul (das ist diese Architektur + Let's-Encrypt).
Backend hinter nginx packen
nginx als Reverse-Proxy
Ein Reverse-Proxy ist ein Server, der Anfragen aus dem Internet annimmt und an ein Backend im Hintergrund weiterleitet. Der Browser spricht nur mit nginx (Port 80/443); das eigentliche Programm (hier ein Python-Backend) lauscht nur lokal auf 127.0.0.1:9000 und ist von außen gar nicht erreichbar.
Warum macht man das?
- Sicherheit: das Backend ist nicht direkt exponiert.
- TLS/HTTPS: nginx übernimmt die Verschlüsselung zentral.
- Caching, Logs, Lastverteilung: nginx kann das für viele Backends gebündelt erledigen.
Das ist der klassische Web-Stack — und die Vorstufe zum Modul „Live-Webseite mit HTTPS deployen".
Wichtige Begriffe
- Backend: das Programm, das den Inhalt erzeugt (lauscht hier auf
127.0.0.1:9000). proxy_pass: die nginx-Direktive, die Anfragen ans Backend weiterreicht.- sites-available / sites-enabled: nginx legt Site-Konfigs in
sites-available/ab und aktiviert sie per Symlink insites-enabled/.
Dein Ziel
Du konfigurierst nginx so, dass Port 80 die Anfragen an das lokale Backend auf Port 9000 weiterleitet.
Aufgaben
1. nginx läuft
Begriff: Dienst-Status. Ein Reverse-Proxy nützt nichts, wenn nginx nicht läuft. Stelle sicher, dass der nginx-Dienst aktiv ist.
sudo systemctl enable --now nginxKontrolle:
systemctl is-active nginxmeldetactive.2. Site-Config geschrieben
Begriff: Site-Konfiguration. Eine Site-Config beschreibt, wie nginx eine bestimmte Webseite behandelt. Mit
proxy_passleitest du alle Anfragen an das lokale Backend weiter.Erstelle
/etc/nginx/sites-available/lab-proxy.conf(sudo nano ...) mit:server { listen 80; location / { proxy_pass http://127.0.0.1:9000; proxy_set_header Host $host; } }Kontrolle:
/etc/nginx/sites-available/lab-proxy.confenthältproxy_pass http://127.0.0.1:9000.3. Site enablen
Begriff: Site aktivieren (Symlink). Eine Config in
sites-available/ist nur vorhanden, nicht aktiv. Aktiv wird sie durch einen Symlink nachsites-enabled/. Entferne die Default-Site, damit sie nicht stört, und lade nginx neu.sudo ln -sf /etc/nginx/sites-available/lab-proxy.conf /etc/nginx/sites-enabled/lab-proxy.conf sudo rm -f /etc/nginx/sites-enabled/default sudo nginx -t && sudo systemctl reload nginxKontrolle:
/etc/nginx/sites-enabled/lab-proxy.confexistiert und enthältproxy_pass http://127.0.0.1:9000.4. Proxy liefert Backend-Content
Begriff: End-to-End-Test. Konfiguration prüfen heißt: live testen, dass nginx den Backend-Inhalt wirklich ausliefert. Rufe localhost auf Port 80 ab — du musst die Antwort des Backends sehen.
curl -s http://localhost/ > /tmp/nginx-output.txt cat /tmp/nginx-output.txtKontrolle:
/tmp/nginx-output.txtenthältHello from Lab-Backend(der Proxy reicht den Backend-Inhalt durch).
Jetzt selbst üben
Lesen ist gut – selbst machen ist besser. Starte diesen Kurs an einer echten Linux-VM, direkt im Browser. Ein kostenloses Konto genügt.
Kostenlos startenLab-Inhalte unter CC BY 4.0 – frei nutzbar mit Namensnennung (© TechLogia).
