|
Dieses Modul ermöglicht es uns, den Wert der Client-IP-Adresse im Client-Anfrage-Header zu ändern (z. B. X-Real-IP oder X-Forwarded-For). Diese Funktion ist für Nginx-Server sehr nützlich, wenn Nginx hinter einigen Layer-7-Lastverteilungsproxies arbeitet, da die lokale IP der Client-Anfrage (also die Anforderungsadresse des Clients) beim Durchqueren des Layer-7-Proxys dem Client-IP-Adressheader hinzugefügt wird, sodass das Backend-Nginx den IP-Adresswert des Clients erhalten kann. Das Modul ist standardmäßig nicht installiert, daher musst du, wenn du das Modul verwenden möchtest, beim Kompilieren der Installation die --with-http_realip_module-Option hinzufügen. Der Grund für die Verwendung dieses Moduls ist, dass es dem Hintergrundserver erlaubt, die IP-Adresse des ursprünglichen Clients aufzuzeichnen. Konfigurationsbeispielset_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP;
Finger Bestellung Das Modul bietet nur zwei Anweisungen. Instruktionsname: set_real_ip_from Funktion: Die Angabe einer vertrauenswürdigen Adresse durch diesen Befehl wird durch eine exakte IP-Adresse ersetzt. Vertrauenswürdige Unix-Sockets können ebenfalls ab Version 0.8.22 verwendet werden. Das hier gesetzte IP bezieht sich auf das FrontendNginx、LackoderTintenfischvonIPAdresse. Syntax: set_real_ip_from [die Adresse| CIDR|" unix:"] Standardwert: keine Nutzungsumgebung: http, Server, Standort Instruktionsname: real_ip_header Funktion: Dieser Befehl wird verwendet, um festzulegen, welchen Header zur Ersetzung der IP-Adresse verwendet werden soll. Wenn X-Forwarded-For verwendet wird, ersetzt das Modul die IP-Adresse des Frontend-Proxys durch die letzte IP-Adresse im X-Forwarded-For-Header. Syntax: real_ip_header [X-Real-IP| X-Weitergeleitet-für] Standardwert: real_ip_header X-Real-IP Nutzungsumgebung: http, Server, Standort Anwendungsfälle Im folgenden Beispiel sieht unsere Umgebung so aus: Es gibt zwei Nginx-Server, einer ist das Frontend, der andere das Backend, der Frontend-Nginx wird als Proxy verwendet, der Backend-Nginx dient zur Bereitstellung des Seitenzugriffs, außerdem gibt es einen Client mit folgender IP-Adresse: Frontend Nginx: 192.168.7.10 Backend-Nginx: 192.168.1.15 Client-Host: 218.239.201.36 Die Nginx-Konfiguration am Frontend sieht so aus: Server { hören 80; server_name www.xx.com;
Standort / { Root-HTML; Index index.html index.htm; Charset UTF-8; }
Ort /865 { proxy_pass http://192.168.3.139:80/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-weitergeleitet-für $proxy_add_x_forwarded_for; proxy_set_header Moderator $host; proxy_redirect ab; }
……
} Die Nginx-Konfiguration für das Backend ist wie folgt: Server { hören 80; server_name lokaler Moderator;
Standort / { Wurzel /var/www/html; Index index.html index.htm; } Zugriff auf den Test Wenn wir auf das http://www.xx.com/865 zugreifen, kein Problem, es kann ein normaler Zugriff sein, das Zugriffsprotokoll ist wie folgt: Logs von Frontend-Nginx: 218.239.201.36 - - [30.Aug/2011:16:09:56 +0800] "GET /865/ HTTP/1.1" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; in den USA; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Protokolle aus dem Backend von Nginx: 192.168.7.10 - - [30/Aug/2011:16:09:56 +0800] "GET // HTTP/1.0" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; in den USA; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Wir sehen, dass die Backend-Nginx-Logs nicht die IP-Adresse des ursprünglichen Clients aufzeichnen, sondern die IP-Adresse des Frontend-Nginx. Wenn Sie die Konfiguration des Nginx-Hintergrundservers ändern: Server { hören 80; server_name lokaler Moderator; set_real_ip_from 192.168.3.0/24; set_real_ip_from 100.100.0.0/16; real_ip_header X-Real-IP;
Standort / { Root-HTML; Index index.html index.htm; }
……
}
Dann führen wir den Zugriffstest erneut durch: Logs von Frontend-Nginx: 218.239.201.36 - - [30.Aug/2011:16:10:28 +0800 "GET /865/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; in den USA; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Protokolle aus dem Backend von Nginx: 218.239.201.36 - - [30/Aug/2011:16:10:28 +0800] "GET // HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; in den USA; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Man sieht, dass diesmal der Hintergrund die IP-Adresse des Kunden aufzeichnet.
|