|
Acest modul ne permite să schimbăm valoarea adresei IP ale clientului în antetul cererii clientului (de exemplu, X-Real-IP sau X-Forwarded-For). Această caracteristică este foarte utilă pentru serverele Nginx dacă Nginx funcționează în spatele unor proxy-uri de echilibrare a încărcării Layer 7, deoarece IP-ul local al cererii clientului (adică adresa cererii clientului) este adăugat la antetul adresei IP ale clientului când trece prin proxy-ul Layer 7, astfel încât backend-ul Nginx să poată obține valoarea adresei IP a clientului. Modulul nu este instalat implicit, așa că dacă vrei să folosești modulul, trebuie să adaugi opțiunea --with-http_realip_module când compilezi instalarea. Motivul folosirii acestui modul este că permite serverului de fundal să înregistreze adresa IP a clientului original. Exemplu de configurațieset_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP;
Degete Ordinea Modulul oferă doar două instrucțiuni. Numele instrucțiunii: set_real_ip_from Funcție: Specificarea unei adrese de încredere prin această comandă va fi înlocuită cu o adresă IP exactă. Socket-urile Unix de încredere pot fi folosite, de asemenea, începând cu versiunea 0.8.22. Setul IP aici se referă la frontend-ulNginx、LacăsauCalamardeIPAdresă. Sintaxă: set_real_ip_from [adresa| CIDR|" unix:"] Valoare implicită: niciuna Mediul de utilizare: http, server, locație Nume instrucțiune: real_ip_header Funcție: Această comandă este folosită pentru a seta ce antet să înlocuiască adresa IP. Dacă se folosește X-Forwarded-For, modulul va înlocui adresa IP a proxy-ului front-end cu ultima adresă IP din antetul X-Forwarded-For. Sintaxă: real_ip_header [X-Real-IP| X-Forwarded-For] Valoare implicită: real_ip_header X-Real-IP Mediul de utilizare: http, server, locație Cazuri de utilizare În exemplul următor, mediul nostru este așa: există două servere Nginx, unul este frontend-ul și celălalt backend-ul, Nginx frontend este folosit ca proxy, iar Nginx backend este folosit pentru a oferi acces la pagini, iar există și un client cu următoarea adresă IP: Frontend Nginx: 192.168.7.10 Backend Nginx: 192.168.1.15 Gazdă client: 218.239.201.36 Configurația Nginx de pe frontend arată astfel: server { ascultă 80; server_name www.xx.com;
Locație / { root html; Index index.html index.htm; Charset UTF-8; }
locație /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 Gazdă $host; proxy_redirect oprit; }
……
} Configurația Nginx pentru backend este următoarea: server { ascultă 80; server_name localhost;
Locație / { root /var/www/html; Index index.html index.htm; } Accesează testul Dacă accesăm http://www.xx.com/865, nicio problemă, poate fi un acces normal, jurnalul de acces este următorul: Jurnale de la Nginx frontend: 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-SUA; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Jurnale de la 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-SUA; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Vedem că jurnalele backend Nginx nu înregistrează adresa IP a clientului original, ci adresa IP a frontend-ului Nginx. Dacă modifici configurația serverului Nginx de fundal la: server { ascultă 80; server_name localhost; set_real_ip_from 192.168.3.0/24; set_real_ip_from 100.100.0.0/16; real_ip_header X-Real-IP;
Locație / { root html; Index index.html index.htm; }
……
}
Apoi facem din nou testul de acces: Jurnale de la Nginx frontend: 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-SUA; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Jurnale de la 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-SUA; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Se poate observa că de data aceasta fundalul înregistrează adresa IP a clientului.
|