Was ist ein Reverse-Proxy und wie funktioniert er?
Veröffentlicht: 2022-08-09
Reverse Proxys sind ein nützliches Tool im Toolkit jedes Systemadministrators. Sie haben viele Verwendungsmöglichkeiten, einschließlich Lastausgleich und Schutz vor DDOS-Angriffen
Was sind Reverse-Proxys?
Ein regulärer Proxy, der als Weiterleitungsproxy bezeichnet wird, ist ein Server, durch den die Verbindung eines Benutzers geleitet wird. In vielerlei Hinsicht ist es wie ein einfaches VPN, das vor Ihrer Internetverbindung sitzt. VPNs sind ein gängiges Beispiel dafür, aber sie umfassen auch Dinge wie Schul-Firewalls, die den Zugriff auf bestimmte Inhalte blockieren können.
Ein Reverse-Proxy funktioniert etwas anders. Es ist ein Backend-Tool, das von Systemadministratoren verwendet wird. Anstatt sich direkt mit einer Website zu verbinden, die Inhalte bereitstellt, kann ein Reverse-Proxy wie NGINX in der Mitte sitzen. Wenn es eine Anfrage von einem Benutzer erhält, wird es diese Anfrage an den endgültigen Server weiterleiten oder „proxyen“. Dieser Server wird als „Ursprungsserver“ bezeichnet, da er tatsächlich auf Anfragen antwortet.
Während ein Benutzer wahrscheinlich weiß, ob er durch einen Forward-Proxy wie ein VPN oder eine Firewall geleitet wird, sind Reverse-Proxys Backend-Tools. Soweit der Benutzer weiß, stellt er lediglich eine Verbindung zu einer Website her. Hinter dem Reverse-Proxy ist alles verborgen, und das hat auch zahlreiche Vorteile.
Dieser Effekt tritt aber auch umgekehrt auf. Der Ursprungsserver hat keine direkte Verbindung zum Benutzer und sieht nur eine Reihe von Anfragen, die von der IP des Reverse-Proxys kommen. Dies kann ein Problem sein, aber die meisten Proxy-Dienste wie NGINX fügen der Anfrage Header wie X-Forwarded-For
hinzu. Diese Header informieren den Ursprungsserver über die tatsächliche IP-Adresse des Clients.
Wofür werden Reverse-Proxys verwendet?
Reverse Proxys sind im Konzept ziemlich einfach, erweisen sich jedoch als überraschend nützliches Tool mit vielen unerwarteten Anwendungsfällen.
Lastverteilung
Einer der Hauptvorteile eines Reverse-Proxys ist, wie leicht sie sein können. Da sie nur Anfragen weiterleiten, müssen sie nicht viel verarbeiten, insbesondere in Situationen, in denen eine Datenbank abgefragt werden muss.
Das bedeutet, dass der Engpass oft der Ursprungsserver ist, aber mit einem Reverse-Proxy davor können Sie problemlos mehrere Ursprungsserver haben. Beispielsweise könnte der Proxy 50 % der Anfragen an einen Server und 50 % an einen anderen senden, wodurch die Kapazität der Website verdoppelt wird. Dienste wie HAProxy sind darauf ausgelegt, damit gut umzugehen.
Dies ist ein sehr häufiger Anwendungsfall, und die meisten Cloud-Anbieter wie Amazon Web Services (AWS) bieten Load Balancing als Service an, wodurch Sie sich die Mühe ersparen, es selbst einzurichten. Mit der Cloud-Automatisierung können Sie die Anzahl der Ursprungsserver sogar automatisch als Reaktion auf den Datenverkehr skalieren, eine Funktion namens „Auto-Scaling“.
Load Balancer wie der Elastic Load Balancer von AWS können so eingerichtet werden, dass sie sich automatisch neu konfigurieren, wenn Ihre Ursprungsserver hoch- und heruntergefahren werden, was alles durch einen Reverse-Proxy unter der Haube ermöglicht wird.
VERWANDT: Erste Schritte mit den Elastic Load Balancern von AWS
Caching
Da ein Reverse-Proxy oft viel schneller antwortet als der Ursprungsserver, wird häufig eine Technik namens Caching verwendet, um Anfragen auf gemeinsamen Routen zu beschleunigen. Beim Caching werden die Seitendaten auf dem Reverse-Proxy gespeichert und nur einmal alle paar Sekunden/Minuten vom Ursprungsserver angefordert. Dadurch wird die Belastung des Ursprungsservers drastisch reduziert.

Dieser Artikel, den Sie gerade lesen, wurde beispielsweise von WordPress bereitgestellt, das mit einer SQL-Datenbank kommunizieren muss, um den Inhalt und die Metadaten des Artikels abzurufen. Dies bei jeder Seitenaktualisierung zu tun, ist verschwenderisch, wenn man bedenkt, dass sich die Seite nicht wirklich ändert. Diese Route kann also zwischengespeichert werden, und der Reverse-Proxy sendet einfach die letzte Antwort an den nächsten Benutzer zurück, anstatt WordPress erneut zu stören.
Ein dediziertes Netzwerk von Reverse-Proxys, die Ihre Inhalte zwischenspeichern, wird als Content Delivery Network oder CDN bezeichnet. CDNs wie CloudFlare oder Fastly werden sehr häufig von großen Websites verwendet, um die globale Bereitstellung zu beschleunigen. Die Server auf der ganzen Welt, die den Inhalt zwischenspeichern, werden „Randknoten“ genannt, und wenn Sie viele davon haben, kann Ihre Website sehr schnell werden.
Netzwerkschutz & Datenschutz
Da der Benutzer nicht weiß, was sich hinter dem Reverse-Proxy verbirgt, kann er Ihre Ursprungsserver nicht einfach direkt angreifen. Tatsächlich werden Reverse-Proxys häufig mit Ursprungsservern in privaten Subnetzen verwendet, was bedeutet, dass sie überhaupt keine eingehenden Verbindungen zum externen Internet haben.
Dadurch bleibt Ihre Netzwerkkonfiguration privat, und obwohl Sicherheit durch Unklarheit nie narrensicher ist, ist es besser, als sie für Angriffe offen zu lassen.
Dieses inhärente Vertrauen kann auch bei der Planung Ihres Netzwerks hilfreich sein. Beispielsweise ähnelt ein API-Server, der mit einer Datenbank kommuniziert, einem Reverse-Proxy. Die Datenbank weiß, dass sie dem API-Server im privaten Subnetz vertrauen kann, und der API-Server fungiert als Firewall für die Datenbank und lässt nur die richtigen Verbindungen durch.
Konfigurierbares Frontend
Einer der Vorteile von Reverse-Proxys wie NGINX ist ihre hohe Konfigurierbarkeit. Oft ist es nützlich, sie vor anderen Diensten zu haben, nur um zu konfigurieren, wie Benutzer auf diese Dienste zugreifen.
Beispielsweise ist NGINX in der Lage, Anfragen auf bestimmte Routen zu begrenzen, was verhindern kann, dass Missbraucher Tausende von Anfragen an Ursprungsserver von einer einzigen IP aus stellen. Dies stoppt DDOS-Angriffe nicht, aber es ist gut, es zu haben.
NGINX ist auch in der Lage, Datenverkehr von mehreren Domänennamen mit konfigurierbaren „Server“-Blöcken weiterzuleiten. Beispielsweise könnte es Anfragen an example.com
an Ihren Ursprungsserver senden, aber api.example.com
an Ihren speziellen API-Server oder files.example.com
an Ihren Dateispeicher und so weiter. Jeder Server kann seine eigene Konfiguration und Regeln haben.
NGINX ist auch in der Lage, zusätzliche Funktionen zu bestehenden Ursprungsservern hinzuzufügen, wie zentralisierte HTTPS-Zertifikate und Header-Konfiguration.
Manchmal ist es nützlich, NGINX auf demselben Computer wie einen anderen lokalen Dienst zu haben, einfach um Inhalte von diesem Dienst bereitzustellen. Beispielsweise verwenden ASP.NET-Web-APIs einen internen Webserver namens Kestrel, der gut auf Anfragen reagieren kann, aber nicht viel mehr. Es ist sehr üblich, Kestrel auf einem privaten Port auszuführen und NGINX als konfigurierbaren Reverse-Proxy zu verwenden.
Zentralisierte Protokollierung
Dieser ist ziemlich einfach, aber wenn der Großteil Ihres Datenverkehrs über einen Dienst läuft, ist es einfach, Protokolle zu überprüfen. Das Zugriffsprotokoll von NGINX enthält viele nützliche Informationen über Ihren Datenverkehr, und obwohl es die Funktionen eines Dienstes wie Google Analytics nicht übertrifft, sind es großartige Informationen.
VERWANDT: So richten Sie ein Elasticsearch Analytics- und Monitoring-Panel für Ihr Unternehmen ein