|
Dette modul giver os mulighed for at ændre værdien af klientens IP-adresse i klientanmodningsheaderen (f.eks. X-Real-IP eller X-Forwarded-For). Denne funktion er meget nyttig for Nginx-servere, hvis Nginx fungerer bag nogle Layer 7 load balancing proxies, fordi den lokale IP på klientforespørgslen (det vil sige klientens anmodningsadresse) tilføjes til klientens IP-adresseheader, når den passerer gennem Layer 7-proxyen, så backend Nginx kan få fat i klientens IP-adresseværdi. Modulet er ikke installeret som standard, så hvis du vil bruge modulet, skal du tilføje --with-http_realip_module-muligheden, når du kompilerer installationen. Grunden til at bruge dette modul er, at det tillader baggrundsserveren at registrere IP-adressen på den oprindelige klient. Konfigurationseksempelset_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP;
Fingre Orden Modulet indeholder kun to instruktioner. Instruktionsnavn: set_real_ip_from Funktion: Angivelse af en betroet adresse via denne kommando vil blive erstattet med en præcis IP-adresse. Trusted Unix-sockets kan også bruges fra version 0.8.22 og frem. IP-sættet her refererer til frontendNginx、LakellerBlæksprutteafIPAdresse. Syntaks: set_real_ip_from [adressen| CIDR|" unix:"] Standardværdi: ingen Brugsmiljø: http, server, lokation Instruktionsnavn: real_ip_header Funktion: Denne kommando bruges til at sætte hvilken header der skal bruges til at erstatte IP-adressen. Hvis X-Forwarded-For bruges, vil modulet erstatte IP-adressen på front-end proxyen med den sidste IP-adresse i X-Forwarded-For-headeren. Syntaks: real_ip_header [X-Real-IP| X-Videresendt-For] Standardværdi: real_ip_header X-Real-IP Brugsmiljø: http, server, lokation Brugsscenarier I det følgende eksempel er vores miljø sådan her: der er to Nginx-servere, den ene er frontend og den anden backend, frontend Nginx bruges som proxy, og backend Nginx bruges til at give sideadgang, og der er også en klient med følgende IP-adresse: Frontend Nginx: 192.168.7.10 Backend Nginx: 192.168.1.15 Klientvært: 218.239.201.36 Nginx-konfigurationen på frontenden ser sådan ud: server { lyt 80; server_name www.xx.com;
Beliggenhed / { root html; indeks index.html index.htm; Charset UTF-8; }
placering /865 { proxy_pass http://192.168.3.139:80/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-videresendt-for $proxy_add_x_forwarded_for; proxy_set_header Vært $host; proxy_redirect væk; }
……
} Nginx-konfigurationen for backend er som følger: server { lyt 80; server_name lokalvært;
Beliggenhed / { rod /var/www/html; indeks index.html index.htm; } Få adgang til testen Hvis vi tilgår http://www.xx.com/865, er der ingen problemer, det kan være en normal adgang, adgangsloggen er som følger: Logs fra 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" Logs fra 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, at backend Nginx-logs ikke registrerer IP-adressen på den oprindelige klient, men IP-adressen på frontend Nginx. Hvis du ændrer konfigurationen af baggrunds-Nginx-serveren til: server { lyt 80; server_name lokalvært; set_real_ip_from 192.168.3.0/24; set_real_ip_from 100.100.0.0/16; real_ip_header X-Real-IP;
Beliggenhed / { root html; indeks index.html index.htm; }
……
}
Så laver vi adgangstesten igen: Logs fra 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" Logs fra 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, at baggrunden denne gang registrerer klientens IP-adresse.
|