|
Denna modul låter oss ändra klientens IP-adressvärde i klientförfrågan-headern (t.ex. X-Real-IP eller X-Forwarded-For). Denna funktion är mycket användbar för Nginx-servrar om Nginx arbetar bakom vissa lastbalanseringsproxyer på lager 7, eftersom den lokala IP-adressen för klientförfrågan (det vill säga klientens adress) läggs till klientens IP-adresshuvud när den passerar genom Layer 7-proxyn, så att backend-Nginx kan få tag på klientens IP-adressvärde. Modulen är inte installerad som standard, så om du vill använda modulen måste du lägga till --with-http_realip_module-alternativet när du kompilerar installationen. Anledningen till att denna modul används är att den tillåter bakgrundsservern att registrera IP-adressen till den ursprungliga klienten. Konfigurationsexempelset_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP;
Fingrar Ordning Modulen ger endast två instruktioner. Instruktionsnamn: set_real_ip_from Funktion: Att ange en betrodd adress via detta kommando ersätts med en exakt IP-adress. Betrodda Unix-socklar kan också användas från version 0.8.22 och framåt. IP-uppsättningen här avser frontendNginx、LackellerBläckfiskavIPAdress. Syntax: set_real_ip_from [adressen| CIDR|" unix:"] Standardvärde: inget Användningsmiljö: http, server, plats Instruktionsnamn: real_ip_header Funktion: Detta kommando används för att ställa in vilken header som ska ersätta IP-adressen. Om X-Forwarded-For används kommer modulen att ersätta IP-adressen till front-end-proxyn med den senaste IP-adressen i X-Forwarded-For-headern. Syntax: real_ip_header [X-Real-IP| X-Vidarebefordrat] Standardvärde: real_ip_header X-Real-IP Användningsmiljö: http, server, plats Användningsområden I följande exempel är vår miljö så här: det finns två Nginx-servrar, en är frontend och den andra backend, frontend-Nginx används som proxy, backend-Nginx används för att ge sidåtkomst, och det finns också en klient med följande IP-adress: Frontend Nginx: 192.168.7.10 Backend Nginx: 192.168.1.15 Klientvärd: 218.239.201.36 Nginx-konfigurationen på frontend ser ut så här: server { lyssna 80; server_name www.xx.com;
Plats / { rot-html; index index.html index.htm; Charset UTF-8; }
plats /865 { proxy_pass http://192.168.3.139:80/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-vidarebefordrade-för $proxy_add_x_forwarded_for; proxy_set_header Programledare $host; proxy_redirect av; }
……
} Nginx-konfigurationen för backend är följande: server { lyssna 80; server_name lokal programledare;
Plats / { rot /var/www/html; index index.html index.htm; } Ta tillgång till testet Om vi får tillgång till http://www.xx.com/865 inga problem, det kan vara en vanlig åtkomst, åtkomstloggen är följande: Loggar från 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; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Loggar från backend 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; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Vi ser att backend-Nginx-loggarna inte registrerar IP-adressen till den ursprungliga klienten, utan IP-adressen till frontend-Nginx. Om du ändrar konfigurationen av bakgrundsservern Nginx till: server { lyssna 80; server_name lokal programledare; set_real_ip_from 192.168.3.0/24; set_real_ip_from 100.100.0.0/16; real_ip_header X-Real-IP;
Plats / { rot-html; index index.html index.htm; }
……
}
Sedan gör vi åtkomsttestet igen: Loggar från 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; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Loggar från backend 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; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Det kan ses att denna gång registrerar bakgrunden klientens IP-adress.
|