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

Zusammenfassung der Verwendung spezieller Operatoren in MySql

Vorwort Es gibt vier Arten von Operatoren in MySQ...

js+Html zur Realisierung einer Tabellenbearbeitungsoperation

In diesem Artikel wird der spezifische Code von j...

Stellen Sie IE8 so ein, dass Code im IE7-Stil verwendet wird

<meta http-equiv="x-ua-kompatibel" co...

Verwenden Sie die Befehle more, less und cat in Linux, um Dateiinhalte anzuzeigen

Unter Linux können die Befehle cat, more und less...

Detaillierte Erklärung der JavaScript-Prototypenkette

Inhaltsverzeichnis 1. Konstruktoren und Instanzen...

W3C Tutorial (3): W3C HTML Aktivitäten

HTML ist eine Hybridsprache, die zum Veröffentlic...

Unicode-Signatur-BOM-Problem (Byte Order Mark) für UTF-8-Dateien

Beim Debuggen einer chinesischen Zen Cart-Website...

Detaillierte Erläuterung gängiger MySQL-Befehle im Linux-Terminal

Aufschlag: # chkconfig --list Alle Systemdienste ...

Einführung in den Prozess zum Erstellen eigener FTP- und SFTP-Server

FTP und SFTP werden häufig als Dateiübertragungsp...

Einige Vorschläge zur Linux-Systemoptimierung (Kerneloptimierung)

Swap deaktivieren Wenn auf dem Server ein Datenba...

So deklarieren Sie einen Cursor in MySQL

So deklarieren Sie einen Cursor in MySQL: 1. Vari...

HTML realisiert Echtzeit-Überwachungsfunktion der Hikvision-Kamera

Das Unternehmen hat vor Kurzem einige CCFA-Aktivi...

So verwenden Sie den Linux-Befehl nl

1. Befehlseinführung nl (Anzahl der Zeilen) fügt ...