Erweiterte Nginx-Reverse-Proxy-Konfiguration


Erweiterte Reverse-Proxy-Konfiguration unter Nginx 01Die erweiterte Reverse-Proxy-Konfiguration unter Nginx impliziert eine Verkehrsverschlüsselung, korrekte Verarbeitung der ursprünglichen Kundenadresse und einiger anderer Punkte.


Wenn Sie an Debian und verwandten Anwendungen interessiert sind, empfehle ich, auf das Debian-Tag in meinem Blog zu verweisen.


Einrichten eines Reverse-Proxys unter Nginx

Im vorherigen Artikel – Reverse Proxy auf Nginx – habe ich nur die grundlegenden Nuancen des Einrichtens von Proxys angesprochen. Jetzt möchte ich tiefer in das Thema einsteigen und über die Arbeitsmomente sprechen, die derzeit unverzichtbar sind.


Ich schlage vor, Sie lesen andere Artikel über Nginx in meinem Blog:

Viel Spaß beim Lesen!


Echte Adresse des Kunden

Wenn Sie Ihren Server hinter einen Reverse-Proxy stellen, stellen Sie möglicherweise bald fest, dass zumindest etwas mit Ihren Protokollen nicht stimmt, zum Beispiel:

Es scheint, dass es nichts Besonderes gibt – ein Eintrag zeigt einen Eintrag von einem normalen PC-Browser und der zweite von einem iPhone an, aber aus irgendeinem Grund ist die Adresse der Geräte überall gleich und stimmt mit der Adresse Ihres Reverse-Proxys überein .

Warum ist das passiert? Wie im vorherigen Artikel erwähnt, kommuniziert der Reverse-Proxy im Namen der Clients mit den Back-End-Servern und leitet deren Anforderungen um. Dies bedeutet, dass die ursprüngliche Clientadresse der Proxy-Adresse entspricht, die wir in den Protokollen sehen.

Die einzige Möglichkeit, diese Situation zu beheben, besteht darin, die reale Adresse des Clients in anderen http-Headern (X-Real-IP, X-Forwarded-For) sowie zusätzliche Informationen (z. B. Proxy-Host, Protokoll) zu übertragen. usw.).

Abschnitt Server in der Basisversion wird die folgende Form annehmen:

Weitere Informationen zu den einzelnen Richtlinien, Überschriften und Variablen finden Sie in der offiziellen Dokumentation .

Beachten Sie, dass Sie auf der Backend-Seite auch das Verhalten ändern und die gewünschten Informationen aus bestimmten Headern extrahieren müssen. Wenn nur die “richtigen” Protokolle benötigt werden, reicht es beispielsweise aus, das Format ein wenig umzuschreiben (siehe Buch) NGINX Server verwalten):

Um den REMOTE_ADDR-Header so zu ändern, dass PHP-Skripte die tatsächlichen Adressen von Clients sehen können, müssen Sie ein zusätzliches Modul installieren – mod-rpaf (oder ähnliches) ::

Standardmäßig ist es nach der Installation bereits aktiviert und muss nur noch konfiguriert werden. Wenn das Modul nicht aktiv ist, führen Sie den folgenden Befehl aus:

Wir überschreiben den Inhalt der Datei:

Zum Bearbeiten öffnen, einfügen:

Starten Sie Apache neu:

Damit ist die Einrichtung abgeschlossen. Denken Sie daran, dass Reverse-Proxys und Back-End-Server Header unterschiedlich behandeln und bedienen können. Eine falsche Konfiguration kann jedoch zu Sicherheitsproblemen führen. .

SSL

Nirgendwo ohne SSL werden wir uns heute mit der Einrichtung der Verschlüsselung zwischen Clients und unserem Nginx befassen.

Ein wichtiges Merkmal ist die Tatsache, dass unser Reverse-Proxy die SSL-Offload-Funktion ausführt. Dies bedeutet, dass der Aufwand für die Ver- / Entschlüsselung vom Reverse-Proxy getragen wird, nicht jedoch von den Back-End-Servern. Dadurch wird eine wirklich ressourcenintensive Aufgabe von ihnen entfernt.

Hinweis: Der Datenverkehr zwischen dem Client und dem Reverse-Proxy wird ordnungsgemäß gesichert, der Datenverkehr zwischen dem Reverse-Proxy und den Back-End-Servern wird jedoch unverschlüsselt. Sie müssen daher sicherstellen, dass Ihr Netzwerkperimeter so streng wie möglich geschützt ist. Andernfalls lassen Sie Ihr Backend nicht mit einem Zertifikat unbedeckt.

Fügen Sie die erforderlichen Anweisungen hinzu und rufen Sie die Konfiguration ab (unter Berücksichtigung der Einstellungen aus dem vorherigen Kapitel):

Modul ngx_http_ssl_module hat viel mehr Parameter, seien Sie nicht zu faul, um die Dokumentation zu lesen .

Hinweis: Möglicherweise benötigen Sie auch Zertifikate mit mittlerer Berechtigung (z. B. Comodo verfügt über solche Dateien mit der Erweiterung .ca-bundle), damit die gesamte Kette von der Stammzertifizierungsstelle bis zu Ihrem Zertifikat vorhanden ist. Apache hat eine spezielle Direktive SSLCACertificateFile, um dieses Zertifikat anzugeben, aber nginx hat kein Gegenstück. Um diese Einschränkung zu umgehen, müssen wir unser Zertifikat mit Zwischenzertifikaten verknüpfen. Dies kann mit dem bekannten Dienstprogramm cat erfolgen – cat domain.crt domain.ca-bundle> certificate.crt .

Es ist zu beachten, dass viele der Standard-SSL-Optionen im Hauptkonfigurationsabschnitt (http) zu finden sind. Entscheiden Sie je nach Situation, wo genau Sie sie verlassen.

Umleiten

Der nächste logische Schritt nach der SSL-Implementierung könnte darin bestehen, eine Umleitung einzurichten von Port 80 zu Port 443. Dies geschieht sehr einfach, aber es ist wichtig, die beste Praxis zu berücksichtigen .

Wir brauchen einen separaten Abschnitt Server, der für das Abhören von Port 80 und die Weiterleitung an 443 verantwortlich ist:

Starten Sie den Daemon neu. In diesem Sinne denke ich, dass das Reverse-Proxy-Setup unter Nginx abgeschlossen ist.

Kommentare bereitgestellt von HyperComments

Leave a Reply

Your email address will not be published. Required fields are marked *