|
Ta modul nam omogoča spreminjanje vrednosti IP naslova odjemalca v glavi zahteve odjemalca (npr. X-Real-IP ali X-Forwarded-For). Ta funkcija je zelo uporabna za Nginx strežnike, če Nginx deluje za nekaterimi Layer 7 proxy strežniki za uravnoteženje obremenitve, saj se lokalni IP zahteve odjemalca (torej naslov zahteve odjemalca) doda glavi IP naslova odjemalca, ko gre skozi proxy, tako da lahko Nginx v zaledju pridobi vrednost IP naslova odjemalca. Modul ni privzeto nameščen, zato če želite modul uporabljati, morate ob prevajanju namestitve dodati možnost --z-http_realip_module. Razlog za uporabo tega modula je, da omogoča strežniku v ozadju, da zabeleži IP naslov izvirnega odjemalca. Primer konfiguracijeset_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP;
Prsti Red Modul ponuja le dve navodili. Ime ukaza: set_real_ip_from Funkcija: Določitev zaupanja vrednega naslova s tem ukazom bo zamenjana z natančnim IP naslovom. Zaupanja vredne Unix vtičnice je mogoče uporabljati tudi od različice 0.8.22 naprej. IP nabor tukaj se nanaša na frontendNginx、LakaliLignjodIPNaslov. Sintaksa: set_real_ip_from [naslov| CIDR|" UNIX:"] Privzeta vrednost: ni Uporabniško okolje: http, strežnik, lokacija Ime navodil: real_ip_header Funkcija: Ta ukaz se uporablja za določitev, katero glavo uporabiti za zamenjavo IP naslova. Če se uporablja X-Forwarded-For, modul nadomesti IP naslov sprednjega proxyja z zadnjim IP naslovom v glavi X-Forwarded-For. Sintaksa: real_ip_header [X-Real-IP| X-posredovano] Privzeta vrednost: real_ip_header X-Real-IP Uporabniško okolje: http, strežnik, lokacija Primeri uporabe V naslednjem primeru je naše okolje takšno: obstajata dva Nginx strežnika, eden je frontend, drugi backend, frontend Nginx se uporablja kot proxy, backend Nginx pa za dostop do strani, prav tako pa je tu odjemalec z naslednjim IP naslovom: Frontend Nginx: 192.168.7.10 Backend Nginx: 192.168.1.15 Odjemalski gostitelj: 218.239.201.36 Nginx konfiguracija na frontendu izgleda takole: Server { poslušaj 80; server_name www.xx.com;
Lokacija / { root html; indeks index.html index.htm; Charset utf-8; }
lokacija /865 { proxy_pass http://192.168.3.139:80/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Posredovano-Za $proxy_dodaj_x_posredovano_za; proxy_set_header voditelj $host; proxy_redirect stran; }
……
} Nginx konfiguracija za backend je naslednja: Server { poslušaj 80; server_name lokalnega voditelja;
Lokacija / { koren /var/www/html; indeks index.html index.htm; } Dostop do testa Če dostopamo do http://www.xx.com/865, ni problema, lahko gre za običajen dostop, dnevnik dostopa je naslednji: Dnevniki s frontenda Nginx: 218.239.201.36 - - [30/avg/2011:16:09:56 +0800] "GET /865/ HTTP/1.1" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-ZDA; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Dnevniki iz backenda Nginx: 192.168.7.10 - - [30/Avg/2011:16:09:56 +0800] "GET // HTTP/1.0" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-ZDA; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Vidimo, da backend Nginx dnevniki ne beležijo IP naslova izvirnega odjemalca, temveč IP naslova frontend Nginx. Če spremenite konfiguracijo ozadnega Nginx strežnika v: Server { poslušaj 80; server_name lokalnega voditelja; set_real_ip_from 192.168.3.0/24; set_real_ip_from 100.100.0.0/16; real_ip_header X-Real-IP;
Lokacija / { root html; indeks index.html index.htm; }
……
}
Nato ponovno izvedemo test dostopa: Dnevniki s frontenda Nginx: 218.239.201.36 - - [30/Avg/2011:16:10:28 +0800 "GET /865/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-ZDA; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Dnevniki iz backenda Nginx: 218.239.201.36 - - [30/avg/2011:16:10:28 +0800] "GET // HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-ZDA; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Vidimo lahko, da tokrat ozadje beleži IP naslov odjemalca.
|