Was ist ein Reverse Proxy? Ein verständlicher Leitfaden für Entwickler

  • VersionDude
  • Werkzeuge
  • 6 Min. Lesezeit

Ein Reverse Proxy sitzt vor deinen Servern und nimmt jede eingehende Anfrage zuerst entgegen — Routing, HTTPS, Caching und Schutz an einer Stelle. Was er leistet, wie er sich von einem Forward Proxy unterscheidet und mit welchen Tools du einen betreibst.

Ein Reverse Proxy ist ein Server, der vor einem oder mehreren Backend-Servern sitzt und jede eingehende Anfrage entgegennimmt, bevor diese sie erreichen. Der Client — ein Browser oder eine App — spricht immer nur mit dem Proxy; der Proxy entscheidet, welches Backend antworten soll, leitet die Anfrage weiter und schickt die Antwort zurück. Nach außen wirkt es wie ein einziger Server, selbst wenn im Hintergrund mehrere arbeiten.

Reverse Proxy vs Forward Proxy

Blaue Ethernet-Kabel in einem Netzwerk-Switch — die Routing-Ebene, vor der ein Reverse Proxy sitzt.
Blaue Ethernet-Kabel in einem Netzwerk-Switch — die Routing-Ebene, vor der ein Reverse Proxy sitzt.

Der Name ergibt mehr Sinn im Vergleich zum Gegenstück. Ein Forward Proxy sitzt vor den Clients und spricht in deren Namen mit dem Internet, wobei er verbirgt, wer die Anfrage stellt — das Modell hinter Web-Filtern in Unternehmen und vielen VPNs. Ein Reverse Proxy macht das genaue Spiegelbild: Er sitzt vor den Servern und wendet sich den Clients zu, wobei er das Backend verbirgt. Dieselbe Vermittler-Idee, nur auf der anderen Seite des Gesprächs.

Was ein Reverse Proxy tatsächlich tut

Seine erste Aufgabe ist das Routing. Eine einzige öffentliche Domain und IP-Adresse kann viele verschiedene Anwendungen nach außen vertreten: Anfragen an /api gehen an einen Dienst, /blog an einen anderen, alles Übrige an einen dritten — ohne dass der Besucher je die Ports oder Maschinen darunter sieht. Genau dieser einzelne Einstiegspunkt erlaubt es dir, ein Dutzend kleiner Dienste zu betreiben und der Welt trotzdem eine saubere Adresse zu präsentieren.

  • Eine Domain vor mehreren Apps oder Microservices
  • Automatisches HTTPS / TLS-Terminierung (Caddy, Nginx)
  • Load Balancing über identische Backends
  • Caching und Kompression zur Entlastung des Backends
  • Rate Limiting, WAF und Verbergen der Backend-Server

Über das Routing hinaus ist der Reverse Proxy der Ort, an dem die übergreifenden Aufgaben einmal erledigt werden statt in jeder App. Er terminiert TLS, sodass die HTTPS-Zertifikate an einer Stelle liegen statt in jedem einzelnen Dienst. Er kann Anfragen über mehrere identische Backends verteilen (Load Balancing), häufige Antworten zwischenspeichern, damit das Backend nicht zweimal für dasselbe belastet wird, und Antworten komprimieren, um Bandbreite zu sparen — alles transparent für die dahinterliegenden Apps.

Eine natürliche Sicherheitsgrenze

Er ist außerdem eine natürliche Sicherheitsgrenze. Da die Backends nie direkt im Internet stehen, bleiben ihre echten Adressen und ihr Software-Stack verborgen, was die Angriffsfläche verkleinert. Der Proxy wird zur einzigen Stelle, an der man Rate Limits durchsetzt, missbräuchlichen Datenverkehr blockiert, eine Web Application Firewall (WAF) anbindet oder einen sich fehlverhaltenden Client abschneidet — Kontrollen, die man sonst jedem Dienst einzeln aufsetzen müsste.

Die Tools, die Reverse Proxys betreiben

Eine Handvoll Tools dominiert diesen Bereich. Nginx und HAProxy sind die altbewährten, kampferprobten Klassiker; Caddy ist beliebt, um automatisches HTTPS nahezu ohne Konfiguration zum Laufen zu bringen; und Traefik ist für Container- und Kubernetes-Umgebungen gebaut, in denen Backends kommen und gehen. Apache kann die Aufgabe ebenfalls per mod_proxy übernehmen, und gemanagte Optionen — Cloud-Load-Balancer oder ein Dienst wie Cloudflare — sind im Grunde Reverse Proxys, die jemand anderes für dich betreibt.

Typische Reverse-Proxy-Setups

In der Praxis begegnet dir ein Reverse Proxy immer dann, wenn ein Server mehr als eine Sache tun muss. Typische Aufbauten sind: mehrere Websites von einer einzigen Maschine ausliefern, HTTPS vor eine App setzen, die nur einfaches HTTP spricht, interne Microservices unter einer aufgeräumten Domain bereitstellen oder den Datenverkehr für mehr Ausfallsicherheit über mehrere Kopien einer App verteilen. Self-Hoster verlassen sich ständig darauf, um viele Tools hinter einer einzigen Adresse zu betreiben.

Reverse Proxy vs Load Balancer vs API-Gateway

Es hilft, den Reverse Proxy gegen seine Nachbarn einzuordnen. Ein Load Balancer ist eigentlich nur eine Funktion, die ein Reverse Proxy bieten kann: das Verteilen von Anfragen auf Backends. Ein API-Gateway ist ein spezialisierter Reverse Proxy für APIs, der obendrauf Authentifizierung, Rate Limiting und das Formen von Anfragen hinzufügt. Die Begriffe überschneiden sich, weil sie alle Spielarten derselben Idee sind — eine schlaue Eingangstür vor deinen Diensten.

Es hilft, den Reverse Proxy gegen seine Nachbarn einzuordnen. Ein Load Balancer ist eigentlich nur eine Funktion, die ein Reverse Proxy bieten kann: das Verteilen von Anfragen auf Backends. Ein API-Gateway ist ein spezialisierter Reverse Proxy für APIs, der obendrauf Authentifizierung, Rate Limiting und das Formen von Anfragen hinzufügt. Die Begriffe überschneiden sich, weil sie alle Spielarten derselben Idee sind — eine schlaue Eingangstür vor deinen Diensten.

— VersionDude

Sollten Sie selbst einen betreiben?

Solltest du also selbst einen betreiben? Wenn du mehr als einen einzigen Dienst selbst hostest, HTTPS sauber abgewickelt haben möchtest oder eine einzige Adresse vor mehreren Apps brauchst, ist ein Reverse Proxy wie Nginx oder Caddy die Standardantwort — und er braucht einen Server, den du selbst kontrollierst, um zu laufen. Es ist ein kleines, stabiles Stück Infrastruktur, das im Stillen viel leistet, und genau deshalb hat fast jeder Produktions-Stack einen.

FAQ

Was ist der Unterschied zwischen einem Reverse Proxy und einem Forward Proxy?

Ein Forward Proxy sitzt vor den Clients und stellt Anfragen ans Internet in ihrem Namen, sodass verborgen bleibt, wer fragt. Ein Reverse Proxy ist das Spiegelbild davon: Er sitzt vor den Servern, den Clients zugewandt, und verbirgt das Backend. Dieselbe Vermittlerrolle, nur auf der anderen Seite des Gesprächs.

Ist ein Reverse Proxy dasselbe wie ein Load Balancer?

Nicht ganz. Load Balancing — das Verteilen von Anfragen auf mehrere Backends — ist nur eine der Aufgaben, die ein Reverse Proxy übernehmen kann. Ein Reverse Proxy kümmert sich außerdem um Routing, TLS-Terminierung, Caching und Sicherheit; ein Load Balancer ist daher nur eine Funktion innerhalb der umfassenderen Reverse-Proxy-Rolle.

Welche Software nutzt man, um einen Reverse Proxy zu betreiben?

Gängige Optionen sind Nginx und HAProxy (langjährig etabliert und erprobt), Caddy (beliebt für automatisches HTTPS) und Traefik (für Container und Kubernetes gemacht). Apache kann es ebenfalls mit mod_proxy, und gemanagte Optionen wie Cloud-Load-Balancer oder Cloudflare sind Reverse Proxys, die jemand anderes für dich betreibt.

Brauche ich einen Reverse Proxy?

Wenn du mehr als einen Dienst selbst hostest, HTTPS sauber an einer einzigen Stelle handhaben möchtest oder eine einzige Adresse vor mehreren Apps brauchst, ist ein Reverse Proxy wie Nginx oder Caddy die Standardantwort. Für eine einzelne einfache App ist er optional, aber so gut wie jeder Produktiv-Stack verwendet einen.

Verwandtes Projekt