So verwenden Sie das Realip-Modul im Nginx-Grundlagenlernen

So verwenden Sie das Realip-Modul im Nginx-Grundlagenlernen

Vorwort

Es gibt zwei Arten von Nginx-Modulen: offizielle und Drittanbietermodule. Wir verwenden den Befehl nginx -V, um die Installationsinformationen von Nginx anzuzeigen, und können die folgenden Modulinformationen zum Laden von --with Nginx beim Start sehen.

Realip-Modul

Zweck: Wenn sich das lokale Nginx im Reverse-Proxy-Backend befindet, kann die tatsächliche IP-Adresse des Benutzers abgerufen werden.

Verwendung: Die Realip-Funktion erfordert, dass Nginx das Modul ngx_http_realip_module hinzufügt, das standardmäßig nicht kompiliert wird. Wenn Sie es hinzufügen müssen, fügen Sie bitte die Option --with-http_realip_module hinzu, um es während der Kompilierung zu aktivieren.

Realip-Bereich

set_real_ip_from, real_ip_header und real_ip_recursive können alle in HTTP-, Server- und Standortzonenkonfigurationen verwendet werden.

Erklärung einiger Realip-Parameter

  • set_real_ip_from: Reverse-Proxy-Server festlegen, d. h. der Server-IP vertrauen
  • real_ip_header X-Forwarded-For: Die echte IP-Adresse des Benutzers befindet sich im Anforderungsheader „X-Forwarded-For“.
  • real_ip_rekursiv:
    • aus: Die letzte IP im HTTP-Header, die durch real_ip_header angegeben wird, wird als echte IP verwendet
    • an: Die letzte IP im HTTP-Header, die durch real_ip_header angegeben wird und kein vertrauenswürdiger Server ist, wird als echte IP behandelt

Erklärung zu X-Forwarded-For, X-Real-IP und Remote Address im http-Header

X-Forwarded-For befindet sich im HTTP-Anforderungsheader und ist ein erweiterter Header von HTTP, der verwendet wird, um die tatsächliche IP-Adresse des HTTP-Anforderungsendes anzugeben.

Das Format ist wie folgt:

X-Weitergeleitet für: Client, Proxy1, Proxy2

Der Nginx-Proxy ist im Allgemeinen wie folgt konfiguriert:

Proxy_Set_Header Host $host;
Proxy_Set_Header X-Real-IP $Remote_Addr;
proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;

erklären:

  • X-Forwarded-For: Nginx hängt es an, aber der vordere Teil stammt aus dem von Nginx empfangenen Anforderungsheader, daher ist dieser Teil nicht sehr glaubwürdig. Es dürfen nur solche verwendet werden, die dem IP-Format entsprechen, da sonst leicht XSS- oder SQL-Injection-Schwachstellen auftreten können.
  • Remote-Adresse: Das HTTP-Protokoll kennt das Konzept von IP nicht. Die Remote-Adresse stammt aus der TCP-Verbindung und gibt die IP des Geräts an, das eine TCP-Verbindung mit dem Server herstellt. Daher kann die Remote-Adresse nicht gefälscht werden.
  • X-Real-IP: Der HTTP-Proxy wird verwendet, um die IP-Adresse des Geräts anzugeben, das eine TCP-Verbindung damit herstellt. Dabei kann es sich um einen anderen Proxy oder das tatsächlich anfordernde Ende handeln.

Beispiel für die Realip-Funktion

Hier ist ein einfaches Architekturdiagramm:

Annahme 1:

1. Wenn Nginx das Realip-Modul nicht verwendet, lautet die X-Forwarded-For-Anforderung im zweiten Nginx 1.1.1.1, aber die Remote_Addr-Adresse lautet 2.2.2.2. Zu diesem Zeitpunkt kann der Anwendungsdienst die tatsächliche IP des Benutzers über das Feld X-Forwarded-For abrufen. Allerdings besteht hier ein Risiko. Wenn sich dazwischen mehrere Schichten von Reverse-Proxy-Diensten befinden, ist es unmöglich, die echte IP des einzelnen Benutzers zu erhalten.

2. Wenn Nginx das Realip-Modul verwendet und wie folgt konfiguriert ist, übernimmt Nginx die letzte IP in X-Forwarded-For, also 2.2.2.2, als echte IP. Schließlich lautet die vom Anwendungsdienst erhaltene Adresse ebenfalls 2.2.2.2, aber tatsächlich ist dies nicht die IP des Benutzers.

setze_reale_IP_ab 2.2.2.2;
setze_reale_IP_ab 2.2.2.3; 
real_ip_header X-Weitergeleitet-Für; 
real_ip_recursive aus;

3. Wenn Nginx das Realip-Modul verwendet und wie folgt eingerichtet ist: Da 2.2.2.2 eine vertrauenswürdige Server-IP ist, sucht Nginx weiter vorwärts und stellt fest, dass 1.1.1.1 keine vertrauenswürdige Server-IP ist. Es betrachtet sie als die echte IP. Tatsache ist jedoch, dass 1.1.1.1 die IP des Benutzers ist. Schließlich erhält der Anwendungsdienst auch die eindeutige reale IP des Benutzers.

setze_reale_IP_ab 2.2.2.2;
setze_reale_IP_ab 2.2.2.3; 
real_ip_header X-Weitergeleitet-Für; 
real_ip_recursive ein;

Zusammenfassen

Dies ist das Ende dieses Artikels über die Verwendung des Realip-Moduls beim Erlernen der Nginx-Grundlagen. Weitere Informationen zur Verwendung des Nginx-Realip-Moduls finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Führen Sie die Schritte zum Konfigurieren der grundlegenden Benutzerauthentifizierung auf Nginx-Ebene aus.
  • Eine kurze Einführung in die Grundlagen von Nginx
  • Nginx-Grundlagen - Gzip-Konfigurationshandbuch
  • Grundlegende Sicherheitskonfiguration des Nginx-Servers und einige Sicherheitstipps
  • Eine Erklärung der grundlegenden Konfiguration von Nginx
  • Lernen Sie die Grundlagen von nginx

<<:  Ein Tutorial für Anfänger zur Installation und Anmeldung bei mysql-8.0.19-winx64 (unbedingt für Anfänger lesen)

>>:  Fallstudie zu JavaScript-Funktionsaufrufen, Apply- und Bind-Methoden

Artikel empfehlen

Lösungen für das Problem der Tabellenschachtelung und Rahmenzusammenführung

【Frage】 Wenn die äußere und die innere Tabelle ve...

Detaillierte Erläuterung des Garbage Collection-Mechanismus von JavaScript

Inhaltsverzeichnis Warum brauchen wir Garbage Col...

Detaillierte Erklärung des Pufferpools in MySQL

Jeder weiß, dass Daten in MySQL auf die Festplatt...

Implementierung von Diensten im Docker für den Zugriff auf Hostdienste

Inhaltsverzeichnis 1. Szenario 2. Lösung 3. Fazit...

Allgemeine Shell-Skriptbefehle und zugehöriges Wissen unter Linux

Inhaltsverzeichnis 1. Einige Punkte, die Sie beac...

Attribute im Vue V-For-Loop-Objekt

Inhaltsverzeichnis 1. Werte innerhalb von Schleif...

Detaillierte Erklärung, wie zwei Node.js-Prozesse kommunizieren

Inhaltsverzeichnis Vorwort Kommunikation zwischen...

Detaillierte Erklärung zu Javascript-Dateien und Blobs

Inhaltsverzeichnis Datei() Grammatik Parameter Be...

Detaillierte Erklärung zur Verwendung des Grep-Befehls in Linux

Linux-Grep-Befehl Mit dem Linux-Befehl grep könne...

Detaillierte Erklärung der Lösung für verweigerte Berechtigungen in Linux

Zugriff verweigert: Der Grund hierfür ist: Es lie...

Kenntnisse über die MySQL Memory-Speicher-Engine

Wissenspunkte zur Speicher-Storage-Engine Die Spe...

Verstehen Sie kurz die MySQL-Datenbankoptimierungsphase

Einführung Haben Sie schon einmal eine Situation ...