|
Tento modul nám umožňuje meniť hodnotu IP adresy klienta v hlavičke požiadavky klienta (napr. X-Real-IP alebo X-Forwarded-For). Táto funkcia je veľmi užitočná pre servery Nginx, ak Nginx pracuje za niektorými proxy servermi na vyvažovanie záťaže vrstvy 7, pretože lokálna IP adresa požiadavky klienta (teda adresa požiadavky klienta) sa pridáva do hlavičky IP adresy klienta pri prechode cez proxy vrstvy 7, aby backendový Nginx mohol získať hodnotu IP adresy klienta. Modul nie je predvolene nainštalovaný, takže ak ho chcete používať, musíte pri kompilácii pridať možnosť --with-http_realip_module. Dôvodom použitia tohto modulu je, že umožňuje serveru na pozadí zaznamenať IP adresu pôvodného klienta. Príklad konfigurácieset_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP;
Prsty Poradie Modul poskytuje iba dve inštrukcie. Názov inštrukcie: set_real_ip_from Funkcia: Zadanie dôveryhodnej adresy týmto príkazom bude nahradené presnou IP adresou. Dôveryhodné Unix sockety je možné používať aj od verzie 0.8.22. Množina IP tu odkazuje na frontendNginx、LakaleboChobotnicazIPAdresa. Syntax: set_real_ip_from [adresa| CIDR|" UNIX:"] Predvolená hodnota: žiadna Prostredie používania: http, server, lokalita Názov inštrukcie: real_ip_header Funkcia: Tento príkaz sa používa na nastavenie, ktorá hlavička sa použije na nahradenie IP adresy. Ak sa použije X-Forwarded-For, modul nahradí IP adresu front-end proxy poslednou IP adresou v hlavičke X-Forwarded-For. Syntax: real_ip_header [X-Real-IP| X-Preposlané] Predvolená hodnota: real_ip_header X-Real-IP Prostredie používania: http, server, lokalita Prípady použitia V nasledujúcom príklade je naše prostredie takéto: existujú dva Nginx servery, jeden je frontend a druhý backend, frontend Nginx slúži ako proxy, backend Nginx poskytuje prístup na stránku, a je tu aj klient s nasledujúcou IP adresou: Frontend Nginx: 192.168.7.10 Backend Nginx: 192.168.1.15 Klientský hostiteľ: 218.239.201.36 Konfigurácia Nginx na frontende vyzerá takto: server { počúvať 80; server_name www.xx.com;
Umiestnenie / { root html; index index.html index.htm; Charset utf-8; }
location /865 { proxy_pass http://192.168.3.139:80/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Moderátor $host; proxy_redirect dole; }
……
} Konfigurácia Nginx pre backend je nasledovná: server { počúvať 80; server_name miestneho moderátora;
Umiestnenie / { root /var/www/html; index index.html index.htm; } Prístup k testu Ak pristupujeme k http://www.xx.com/865, žiadny problém, môže to byť bežný prístup, prístupový log je nasledovný: Logy z frontendu 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" Záznamy z backendu 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" Vidíme, že backendové logy Nginx nezaznamenávajú IP adresu pôvodného klienta, ale IP adresu frontendového Nginx. Ak upravíte konfiguráciu pozadia Nginx servera na: server { počúvať 80; server_name miestneho moderátora; set_real_ip_from 192.168.3.0/24; set_real_ip_from 100.100.0.0/16; real_ip_header X-Real-IP;
Umiestnenie / { root html; index index.html index.htm; }
……
}
Potom opäť urobíme test prístupu: Logy z frontendu 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" Záznamy z backendu 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" Je vidieť, že tentoraz pozadie zaznamenáva IP adresu klienta.
|