Was ist ein Reverse-Proxy und wie funktioniert er?

Was ist ein Reverse-Proxy und wie funktioniert er?

Reverse Proxys sind ein nützliches Werkzeug in der Werkzeugkiste jedes Systemadministrators. Sie haben viele Verwendungsmöglichkeiten, einschließlich Lastausgleich, DDOS-Schutz

Was sind Reverse-Proxys?

Ein regulärer Proxyserver, der als Weiterleitungsproxy bezeichnet wird, ist ein Server, über 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. Dies ist ein internes Tool, das von Systemadministratoren verwendet wird. Anstatt sich direkt mit der Website zu verbinden, die den Inhalt bereitstellt, kann ein Reverse-Proxy wie NGINX in der Mitte sitzen. Wenn es eine Anfrage von einem Benutzer erhält, leitet es diese Anfrage an den endgültigen Server weiter oder „proxyt“ sie. Dieser Server wird als „Ursprungsserver“ bezeichnet, da er derjenige ist, der auf Anfragen antwortet.

Während der Benutzer wahrscheinlich weiß, ob er über einen Forward-Proxy wie ein VPN oder eine Firewall geleitet wird, sind Reverse-Proxys interne Tools. Soweit der Benutzer weiß, verbindet er sich einfach mit der Website. Hinter einem Reverse Proxy verbirgt sich alles und das hat auch viele Vorteile.

Dieser Effekt tritt jedoch auch umgekehrt auf. Der Ursprungsserver hat keine direkte Verbindung zum Benutzer und sieht nur eine Reihe von Anfragen, die von der IP-Adresse des Reverse-Proxys kommen. Dies kann ein Problem sein, aber die meisten Proxy-Dienste wie NGINX fügen  X-Forwarded-For der Anfrage Typ-Header hinzu. Diese Header informieren den Ursprungsserver über die tatsächliche IP-Adresse des Clients.

Wofür werden Reverse-Proxys verwendet?

Reverse Proxys haben ein recht einfaches Konzept, haben sich aber als überraschend nützliches Tool mit vielen unerwarteten Anwendungsfällen erwiesen.

Lastverteilung

Einer der Hauptvorteile eines Reverse-Proxys ist seine Leichtigkeit. Da sie nur Anfragen weiterleiten, müssen sie nicht viel verarbeiten, insbesondere in Situationen, in denen eine Datenbankabfrage ausgeführt 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 kann ein Proxy 50 % der Anfragen an einen Server und 50 % an einen anderen senden, wodurch sich die Bandbreite einer Website verdoppelt. Dienste wie HAProxy sind gut darin.

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 sogar die Anzahl der Quellserver basierend auf dem Datenverkehr automatisch skalieren – eine Funktion namens „Autoscaling“.

Load Balancer wie der Elastic Load Balancer von AWS können so konfiguriert werden, dass sie sich automatisch neu konfigurieren, wenn Ihre Quellserver ausfallen, was alles durch einen Reverse-Proxy im Hintergrund ermöglicht wird.

zwischenspeichern

Da der Reverse-Proxy oft viel schneller antwortet als der Ursprungsserver, wird häufig eine Technik namens Caching verwendet, um Anfragen auf gemeinsam genutzten Routen zu beschleunigen. Beim Caching werden Seitendaten auf einem Reverse-Proxy-Server gespeichert und nur einmal alle paar Sekunden/Minuten vom Ursprungsserver angefordert. Dadurch wird die Last auf dem Quellserver erheblich reduziert.

Dieser Artikel, den Sie gerade lesen, wurde beispielsweise von WordPress bereitgestellt, das auf eine SQL-Datenbank zugreifen muss, um den Inhalt und die Metadaten des Artikels abzurufen. Dies bei jeder Seitenaktualisierung zu tun, ist verschwenderisch, da sich die Seite nicht wirklich ändert. Auf diese Weise kann diese Route zwischengespeichert werden und der Reverse-Proxy sendet einfach die letzte Antwort an den nächsten Benutzer, anstatt WordPress erneut zu stören.

Ein dediziertes Netzwerk von Reverse-Proxy-Servern, 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. Server auf der ganzen Welt, die Inhalte zwischenspeichern, werden als „Edge-Knoten“ bezeichnet, und eine große Anzahl von ihnen kann Ihre Website sehr schnell machen.

Netzwerksicherheit und Datenschutz

Da der Benutzer nicht weiß, was sich hinter dem Reverse-Proxy verbirgt, kann er die Ursprungsserver nicht einfach direkt angreifen. Tatsächlich werden Reverse-Proxys normalerweise 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 zuverlässig 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 ist ein API-Server, der mit einer Datenbank interagiert, wie ein 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 gültige Verbindungen zu.

Anpassbare Schnittstelle

Einer der Vorteile von Reverse-Proxys wie NGINX ist, dass sie einfach einzurichten sind. Es ist oft nützlich, sie vor anderen Diensten zu haben, nur um den Benutzerzugriff auf diese Dienste zu konfigurieren.

Beispielsweise kann NGINX Anfragen auf bestimmte Routen beschränken, was Angreifer daran hindern kann, Tausende von Anfragen an Ursprungsserver von einer einzigen IP-Adresse zu stellen. Es stoppt DDOS-Angriffe nicht, aber das ist eine gute Sache.

NGINX kann auch Datenverkehr von mehreren Domänennamen mithilfe von benutzerdefinierten „Server“-Blöcken umleiten. Beispielsweise kann es Anfragen an example.com Ihren Ursprungsserver senden, aber api.example.com an Ihren benutzerdefinierten API-Server oder files.example.com Ihren Dateispeicher und so weiter. Jeder Server kann seine eigene Konfiguration und Regeln haben.

NGINX kann auch zusätzliche Funktionen zu bestehenden Ursprungsservern hinzufügen, wie z. B. zentralisierte HTTPS-Zertifikate und Header-Konfiguration.

Manchmal ist es nützlich, NGINX auf demselben Computer wie einen anderen lokalen Dienst zu haben, nur um den Inhalt dieses Dienstes bereitzustellen. Beispielsweise verwenden ASP.NET-Web-APIs einen internen Webserver namens Kestrel, der gut reagiert, aber nicht mehr. Es ist sehr üblich, Kestrel auf einem privaten Port auszuführen und NGINX als benutzerdefinierten Reverse-Proxy zu verwenden.

Zentralisierte Protokollierung

Es ist ziemlich einfach, aber der größte Teil Ihres Datenverkehrs läuft über einen einzigen Dienst, wodurch es einfach ist, Protokolle zu überprüfen. Das NGINX-Zugriffsprotokoll enthält viele nützliche Informationen über Ihren Datenverkehr, und obwohl es Dienste wie Google Analytics nicht übertrifft, sind es nützliche Informationen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert