Was ist ein Reverse Proxy?
Ein Reverse Proxy ist ein Server, der alle Anfragen aus dem Internet entgegennimmt und an die passenden Anwendungen im Hintergrund weiterleitet.
Ohne Fachbegriffe, für Betriebe ohne eigene IT.
Auf dieser Seite3 Abschnitte
Einfach erklärt
Ein Reverse Proxy ist der Empfang vor Ihren Anwendungen. Alle Besucher kommen zuerst bei ihm an. Er erkennt am Namen, wohin eine Anfrage will, und schickt sie an das richtige Programm im Hintergrund: dokumente.ihre-firma.de an die Dokumentenablage, hilfe.ihre-firma.de an das Ticketsystem. Die Programme selbst sind von außen nicht direkt erreichbar. Das ist wie der Empfang in einem Bürohaus: Besucher melden sich vorne an und werden zur richtigen Firma geschickt, direkt in die Büros kommt niemand.
Wozu das gut ist
- Ein Schloss für alle: Der Reverse Proxy kümmert sich um die verschlüsselte Verbindung (HTTPS) und die Zertifikate, etwa von Let's Encrypt. Die Programme dahinter müssen das nicht einzeln können.
- Mehrere Anwendungen auf einem Server: Alle teilen sich dieselbe Adresse und denselben Eingang.
- Schutz: Er kann Zugriffe begrenzen, bestimmte Bereiche nur aus dem Firmennetz erlauben und auffällige Anfragen abweisen.
Worauf Sie achten sollten
Fällt der Reverse Proxy aus, sind alle Anwendungen dahinter nicht erreichbar. Er braucht deshalb dieselbe Pflege wie jeder Server: Updates, Überwachung und Zertifikate, die sich rechtzeitig verlängern. Ihr IT-Dienstleister richtet ihn ein und sollte prüfen, dass die Anwendungen wirklich nur über ihn erreichbar sind.
Gut zu wissen: Das Gegenstück ist der klassische Proxy, der die Verbindungen der Mitarbeitenden ins Internet vermittelt. Der Reverse Proxy arbeitet in die andere Richtung, für Besucher von außen.
Funktionsweise
RFC 9110 (HTTP Semantics, Abschnitt 3.7) beschreibt den Reverse Proxy als Gateway: Er tritt gegenüber dem Client als Ursprungsserver auf und leitet Anfragen an einen oder mehrere Server weiter. Er terminiert TLS, wählt das Ziel nach Hostname und Pfad und ergänzt Header, damit die Anwendung die Adresse des Clients und das ursprüngliche Protokoll kennt. Standardisiert ist dafür der Header Forwarded (RFC 7239), verbreiteter sind X-Forwarded-For und X-Forwarded-Proto. Gängige Software sind nginx, Caddy, Traefik und HAProxy. Neben der Weiterleitung übernimmt der Proxy oft weitere Aufgaben: Lastverteilung auf mehrere Server, Zwischenspeichern statischer Inhalte, Begrenzung der Anfragen je Adresse (Rate Limiting), Security-Header und eine vorgeschaltete Anmeldung für Anwendungen ohne eigenen Schutz.
server {
listen 443 ssl;
server_name dokumente.ihre-firma.de;
ssl_certificate /etc/letsencrypt/live/dokumente.ihre-firma.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dokumente.ihre-firma.de/privkey.pem;
client_max_body_size 100m;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Die letzten drei Zeilen reichen WebSocket-Verbindungen durch, die Anwendungen für Live-Funktionen wie gemeinsames Bearbeiten nutzen.
Typische Fehler
- Anwendung zusätzlich direkt erreichbar. Der Port hinter dem Proxy ist auf
0.0.0.0offen. Zugriffsregeln und Anmeldeschutz des Proxys lassen sich so umgehen. - Anwendung vertraut dem Proxy nicht. Sie sieht nur
127.0.0.1als Client, erzeugthttp://-Links oder Weiterleitungsschleifen. Nextcloud etwa braucht dafürtrusted_proxiesundoverwriteprotocol. - Anwendung vertraut jedem. Übernimmt sie
X-Forwarded-Forvon beliebigen Absendern, können Angreifer ihre Adresse fälschen und Sperren umgehen. - WebSockets nicht durchgereicht. Live-Funktionen brechen ab oder fallen auf langsames Nachfragen zurück.
- Upload-Grenze vergessen. nginx lehnt Anfragen mit mehr als 1 MB Inhalt standardmäßig mit Fehler 413 ab, große Scans scheitern.
Prüfen
curl -sI https://dokumente.ihre-firma.de
nc -zv -w 3 <server-ip> 8000
Der erste Aufruf soll mit gültigem Zertifikat antworten. Der zweite, von einem Rechner außerhalb gestartet, soll scheitern. Ob die echte Adresse der Besucher ankommt, zeigt das Zugriffsprotokoll der Anwendung: Dort sollte nicht nur 127.0.0.1 stehen.