|
Tento modul nám umožňuje měnit hodnotu IP adresy klienta v hlavičce požadavku klienta (např. X-Real-IP nebo X-Forwarded-For). Tato funkce je velmi užitečná pro servery Nginx, pokud Nginx pracuje za některými proxy servery pro vyrovnání zátěže vrstvy 7, protože lokální IP požadavku klienta (tedy adresa požadavku klienta) je přidána do hlavičky IP adresy klienta při průchodu přes proxy vrstvy 7, takže backend Nginx může získat hodnotu IP adresy klienta. Modul není ve výchozím nastavení nainstalován, takže pokud ho chcete používat, musíte při kompilaci instalace přidat možnost --with-http_realip_module. Důvodem použití tohoto modulu je, že umožňuje serveru na pozadí zaznamenat IP adresu původního klienta. Příklad konfiguraceset_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP;
Prsty Řád Modul poskytuje pouze dvě instrukce. Název instrukce: set_real_ip_from Funkce: Zadání důvěryhodné adresy tímto příkazem bude nahrazeno přesnou IP adresou. Důvěryhodné Unixové sockety lze také používat od verze 0.8.22 dále. Zde se IP sada vztahuje na frontendNginx、LakneboSépiezIPAdresa. Syntaxe: set_real_ip_from [adresa| CIDR|" unix:"] Výchozí hodnota: žádná Prostředí použití: http, server, lokalita Název instrukce: real_ip_header Funkce: Tento příkaz slouží k nastavení, kterou hlavičku použít k nahrazení IP adresy. Pokud je použit X-Forwarded-For, modul nahradí IP adresu front-end proxy poslední IP adresou v hlavičce X-Forwarded-For. Syntaxe: real_ip_header [X-Real-IP| X-Přeposíleno] Výchozí hodnota: real_ip_header X-Real-IP Prostředí použití: http, server, lokalita Případy použití V následujícím příkladu je naše prostředí takovéto: existují dva servery Nginx, jeden je frontend a druhý backend, frontend Nginx slouží jako proxy, backend Nginx poskytuje přístup ke stránkám, a je zde také klient s následující IP adresou: Frontend Nginx: 192.168.7.10 Backend Nginx: 192.168.1.15 Klientský hostitel: 218.239.201.36 Konfigurace Nginx na frontendu vypadá takto: server { Listen 80; server_name www.xx.com;
Poloha / { root html; index index.html index.htm; Charset utf-8; }
Místo /865 { proxy_pass http://192.168.3.139:80/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Přeposíleno-Pro $proxy_add_x_forwarded_for; proxy_set_header moderátor $host; proxy_redirect pryč; }
……
} Konfigurace Nginx pro backend je následující: server { Listen 80; server_name místního moderátora;
Poloha / { kořen /var/www/html; index index.html index.htm; } Přístup k testu Pokud přistupujeme k http://www.xx.com/865, žádný problém, může to být normální přístup, přístupový log je následující: Logy z frontendu Nginx: 218.239.201.36 - - [30/srp/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" Logy z backendu Nginx: 192.168.7.10 - [30/srp/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. Pokud upravíte konfiguraci serveru Nginx na pozadí: server { Listen 80; server_name místního 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;
Poloha / { root html; index index.html index.htm; }
……
}
Pak znovu provedeme test přístupu: Logy z frontendu Nginx: 218.239.201.36 - - [30/srp/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" Logy z backendu Nginx: 218.239.201.36 - - [30/srp/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 vidět, že tentokrát pozadí zaznamenává IP adresu klienta.
|