Reverse-Proxy mit NGINX Plus

NGINX | 10. April 2014

NGINX genießt zu Recht den Ruf eines äußerst leistungsfähigen Webservers. Ich denke, viele wissen, dass NGINX auch als Reverse-Proxy eingesetzt werden kann, aber ihnen ist möglicherweise nicht bewusst, wie leistungsfähig NGINX in dieser Funktion tatsächlich ist.

Was ist ein Reverse-Proxy?

Gehen wir zunächst einen Schritt zurück und fragen uns: Was ist ein Proxyserver? Ich finde, Wikipedia liefert eine gute Definition:

„[Ein] Proxyserver ist ein Server (ein Computersystem oder eine Anwendung), der als Vermittler für Anfragen von Clients fungiert, die Ressourcen von anderen Servern anfordern.“

Ein Proxyserver befindet sich also zwischen einem Client und dem eigentlichen Server, auf dem die vom Client gesuchten Daten gehostet werden. Für den Client erscheint der Proxyserver als der eigentliche Backend-Server, während er für den Backend-Server wie ein Client wirkt. Für die Definition eines Reverse-Proxy-Servers greifen wir erneut auf Wikipedia zurück:

„[Ein] Reverse-Proxy ist eine Art Proxyserver, der im Auftrag eines Clients Ressourcen von einem oder mehreren Servern abruft.“

Der Unterschied besteht darin, dass sich ein Proxyserver zwischen den Clients und nur einem Backend-Server befindet, während ein Reverse-Proxy-Server einem oder mehreren Backend-Servern vorgeschaltet ist und für jede Anfrage entscheidet, welcher davon verwendet wird.

Welche Vorteile bietet die Verwendung eines Reverse-Proxys?

Warum sollten Sie einen Reverse-Proxy-Server verwenden? Dafür gibt es eine Reihe von Vorteilen:

  • Nebenläufigkeit – Bei Internetanwendungen öffnen häufig sehr viele Clients jeweils mehrere Verbindungen, sodass eine enorme Anzahl von Verbindungen zu den Backend-Servern entsteht. Viele Web- und Anwendungsserver können eine große Anzahl von Verbindungen nicht effizient verarbeiten (NGINX bildet bei der Verwendung als Webserver eine Ausnahme). Daher kann der Einsatz eines Reverse-Proxys, der mehrere Verbindungen besser bewältigt, die Leistung der Backend-Server deutlich verbessern.
  • Ausfallsicherheit – Wenn Clients eine direkte Verbindung zu einem Backend-Server herstellen und dieser ausfällt, schlagen die Anfragen aller derzeit mit dem Server verbundenen Clients (oder der Clients, die gerade versuchen, eine Verbindung herzustellen) fehl. Ein Reverse-Proxy-Server kann den Zustand der Backend-Server überwachen und die Weiterleitung von Anfragen an einen ausgefallenen Server aussetzen, bis dieser wieder betriebsbereit ist. Für die Clients tritt kein Fehler auf, da der Reverse-Proxy ihre Anfragen automatisch an die weiterhin betriebsbereiten Backend-Server weiterleitet.
  • Skalierbarkeit – Da ein Reverse-Proxy als zentrale „öffentliche Schnittstelle“ für die Gruppe der Backend-Server fungiert, können Sie je nach verändertem Datenverkehrsaufkommen Server hinzufügen oder entfernen.
  • Layer-7-Routing – Ein Reverse-Proxy sieht den an alle Server gerichteten Datenverkehr und kann intelligent entscheiden, wohin die einzelnen Anfragen weitergeleitet werden sollen. Dabei kann er Anfragen und Antworten nach Bedarf ändern. Routing-Entscheidungen kann er beispielsweise anhand eines bestimmten HTTP-Headers in der Anfrage, eines Teils einer URL oder des geografischen Standorts des Clients treffen.
  • Caching – Ein Reverse-Proxy eignet sich hervorragend für das Caching – in der Regel ist es wesentlich effizienter, Inhalte dort zwischenzuspeichern, als alle Anfragen an Backend-Server weiterzuleiten und jeden Backend-Server seinen eigenen Cache aufbauen zu lassen.
  • Weitere Funktionen – Da ein Reverse-Proxy den Backend-Servern vorgeschaltet ist, kann er auch andere Aufgaben übernehmen, etwa die Verkehrssteuerung anhand der Bandbreite oder Anfragerate, die Begrenzung von Verbindungen, die Integration verschiedener Autorisierungssysteme, die Aktivitätsüberwachung und vieles mehr.

NGINX Plus als Reverse-Proxy verwenden

NGINX Plus erweitert die renommierten Webserver-Funktionen von NGINX Open Source um noch mehr Features und wird damit zu einem voll ausgestatteten Application Delivery Controller (ADC), der proprietäre Hardware-Appliances ersetzen kann.

Im Folgenden sind nur einige der in NGINX Plus verfügbaren Funktionen aufgeführt.

Lastverteilung

Es stehen mehrere Algorithmen für den Lastenausgleich zur Auswahl, sowohl gewichtete als auch ungewichtete. Auch Sitzungspersistenz wird unterstützt. NGINX Plus kann den Lastenausgleich für HTTP, HTTPS, WebSocket, FastCGI, memcached, SCGI, SPDY [durch HTTP/2 abgelöst, für das NGINX Plus ebenfalls einen Lastenausgleich bietet] und uwsgi übernehmen. Mehr erfahren.

Systemzustandsprüfungen

Es wird sowohl die passive als auch die aktive Überwachung des Zustands von Backend-Servern unterstützt. Wenn NGINX Plus keine Verbindung zu einem Knoten herstellen kann, wird dieser als ausgefallen markiert. Aktive Zustandsprüfungen können außerdem so konfiguriert werden, dass sie regelmäßig für Backend-Knoten ausgeführt werden. Darüber hinaus kann die Slow-Start-Funktion verwendet werden, damit NGINX Plus den Datenverkehr zu einem gerade erst online gegangenen Knoten langsam erhöht und ihn nicht durch einen plötzlichen starken Datenverkehr überlastet. Weitere Informationen.

Anfragenweiterleitung

Datenverkehr kann anhand jedes beliebigen Bestandteils einer Anfrage weitergeleitet werden, beispielsweise anhand der Client-IP-Adresse, des Hostnamens, der URI, der Abfragezeichenfolge, der Header usw.

Umschreiben von Anfragen und Antworten

Jeder Teil einer Anfrage oder Antwort kann geändert werden, einschließlich Header, Textkörper und URI. NGINX Plus kann außerdem Header hinzufügen und löschen. Weitere Informationen.

Caching

Antworten können zwischengespeichert werden. Sie können konfigurieren, welche Arten von Inhalten wie lange zwischengespeichert werden sollen. Außerdem können Sie Elemente aus dem Cache löschen. Mehr erfahren.

Komprimierung

Die Gzip-Komprimierung wird unterstützt und bietet eine präzise Steuerung darüber, welche Inhalte komprimiert werden und wann die Komprimierung verwendet wird. Mehr erfahren.

SSL/TLS-Verarbeitung

SSL/TLS-Entschlüsselung und -Verschlüsselung werden unterstützt. Die Entschlüsselung kann für viele Domainnamen mit unterschiedlichen Zertifikaten durchgeführt werden. Mehr erfahren.

Überwachung und Protokollierung von Live-Aktivitäten

Im JSON-Format codierte NGINX Plus-Statistiken sind über eine einfache HTTP-Anfrage verfügbar. Zur Anzeige der Statistiken steht eine Dashboard-Webseite bereit. Alternativ können Sie die Daten an eigene Überwachungstools oder Tools von Drittanbietern übermitteln. Benutzerdefinierte Protokolle können sowohl für die lokale Protokollierung als auch für den Export an syslog konfiguriert werden. Weitere Informationen.

Und vieles mehr

NGINX bietet viele weitere Funktionen, darunter Unterstützung für Video-Streaming, Mail-Proxy-Unterstützung, GeoIP-Unterstützung, reibungslose Neustarts und Upgrades ohne Ausfallzeiten, Traffic-Shaping, Verbindungsbegrenzung und vieles mehr. Weitere Informationen finden Sie unter nginx.com und nginx.org.


Teilen
Schlagwörter: F5 NGINX, Tech

Über den Autor

Rick Nelson
Rick NelsonRegional Vice President, Solution Engineering

Weitere Blogbeiträge von Rick Nelson

Ähnliche Blogbeiträge

Die Zukunft von NGINX: Zurück zu unseren Open-Source-Wurzeln
NGINX | 23.08.2022

Die Zukunft von NGINX: Zurück zu unseren Open-Source-Wurzeln

Beim NGINX Sprint 2022 besinnen wir uns auf unsere Open-Source-Wurzeln. Erfahren Sie mehr über die Initiativen, die wir im kommenden Jahr verfolgen, und teilen Sie uns mit, was Sie sich wünschen.

Ein Leitfaden zur Auswahl eines Ingress-Controllers, Teil 1: Ermitteln Sie Ihre Anforderungen
NGINX | 08.09.2021

Ein Leitfaden zur Auswahl eines Ingress-Controllers, Teil 1: Ermitteln Sie Ihre Anforderungen

Ein Ingress-Controller kann eines der leistungsstärksten Tools in Ihrem Kubernetes-Stack sein. Erfahren Sie, wie Sie Ihre Ingress-Anforderungen ermitteln, um die beste Option auszuwählen.

Bereitstellung des NGINX Ingress Controllers auf Amazon EKS: So haben wir getestet
NGINX | 16.08.2021

Bereitstellung des NGINX Ingress Controllers auf Amazon EKS: So haben wir getestet

Wir haben kürzlich den Lösungsleitfaden zum NGINX Ingress Controller um Empfehlungen zur Dimensionierung für Amazon Elastic Kubernetes Service (EKS) ergänzt. In diesem Blogbeitrag erläutern wir, wie wir diese Empfehlungen erarbeitet haben, und stellen Ihnen alle Informationen zur Verfügung, die Sie benötigen, um selbst ähnliche Tests durchzuführen.

Protokollierung des Datenverkehrs zwischen NGINX und Upstream-Servern bei CDN77
NGINX | 12.12.2018

Protokollierung des Datenverkehrs zwischen NGINX und Upstream-Servern bei CDN77

Bei der Fehlersuche bei Datenverkehrsproblemen zwischen NGINX und Upstream-Servern konnte CDN77 die benötigten Daten nur aus dem Fehlerprotokoll mit aktivierter Debug-Ausgabe beziehen, was die Leistung beeinträchtigt und riesige Dateien erzeugt. Daher entwickelte das Team ein neues benutzerdefiniertes Modul, das ausschließlich die benötigten Daten protokolliert.

Ankündigung von NGINX Plus R16
NGINX | 05.09.2018

Ankündigung von NGINX Plus R16

NGINX Plus R16 ist eine einheitliche, elastische Ingress- und Egress-Schicht für Anwendungen, die die Funktionen eines Load Balancers, API-Gateways und einer WAF vereint und neue Features wie clusterfähige Ratenbegrenzung, Schlüssel-Wert-Speicher, „Random with Two Choices“, verbessertes UDP-Load-Balancing und vieles mehr bietet.

5 Gründe für den Umstieg auf softwarebasiertes Load Balancing
NGINX | 13.10.2016

5 Gründe für den Umstieg auf softwarebasiertes Load Balancing

Entdecken Sie fünf Gründe für den Wechsel zu einem softwarebasierten Load Balancer wie NGINX Plus, darunter Kosteneinsparungen, die Einführung von DevOps und eine einheitliche Lösung für alle Umgebungen.