|
Denne modulen lar oss endre verdien av klientens IP-adresse i klientforespørselsheaderen (f.eks. X-Real-IP eller X-Forwarded-For). Denne funksjonen er svært nyttig for Nginx-servere hvis Nginx fungerer bak noen Layer 7-lastbalanseringsproxyer, fordi den lokale IP-adressen til klientforespørselen (altså klientens forespørselsadresse) legges til klientens IP-adresseheader når den passerer gjennom Layer 7-proxyen, slik at backend-Nginx kan hente IP-adresseverdien til klienten. Modulen er ikke installert som standard, så hvis du vil bruke modulen, må du legge til --with-http_realip_module-alternativet når du kompilerer installasjonen. Grunnen til å bruke denne modulen er at den lar bakgrunnsserveren registrere IP-adressen til den opprinnelige klienten. Konfigurasjonseksempelset_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP;
Fingre Rekkefølge Modulen gir kun to instruksjoner. Instruksjonsnavn: set_real_ip_from Funksjon: Å spesifisere en betrodd adresse gjennom denne kommandoen vil bli erstattet med en eksakt IP-adresse. Pålitelige Unix-sokler kan også brukes fra versjon 0.8.22 og utover. IP-satt her refererer til frontendNginx、LakkellerBlekksprutavIPAdresse. Syntaks: set_real_ip_from [adressen| CIDR|" unix:"] Standardverdi: ingen Bruksmiljø: http, server, lokasjon Instruksjonsnavn: real_ip_header Funksjon: Denne kommandoen brukes til å sette hvilken header som skal brukes for å erstatte IP-adressen. Hvis X-Forwarded-For brukes, vil modulen erstatte IP-adressen til front-end proxyen med den siste IP-adressen i X-Forwarded-For-headeren. Syntaks: real_ip_header [X-Real-IP| X-Forwarded-For] Standardverdi: real_ip_header X-Real-IP Bruksmiljø: http, server, lokasjon Bruksområder I det følgende eksempelet er miljøet vårt slik: det finnes to Nginx-servere, én er frontend og en annen backend, frontend Nginx brukes som proxy, og backend Nginx brukes til å gi sidetilgang, og det finnes også en klient med følgende IP-adresse: Frontend Nginx: 192.168.7.10 Backend Nginx: 192.168.1.15 Klientvert: 218.239.201.36 Nginx-konfigurasjonen på frontenden ser slik ut: server { Hør 80; server_name www.xx.com;
Lokasjon / { rot-html; indeks index.html index.htm; Charset UTF-8; }
lokasjon /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 programleder $host; proxy_redirect av; }
……
} Nginx-konfigurasjonen for backend er som følger: server { Hør 80; server_name lokalprogramleder;
Lokasjon / { rot /var/www/html; indeks index.html index.htm; } Få tilgang til testen Hvis vi får tilgang til http://www.xx.com/865, er det ikke noe problem, det kan være en vanlig tilgang, tilgangsloggen er som følger: Logger 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" Logger 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-loggene ikke registrerer IP-adressen til den opprinnelige klienten, men IP-adressen til frontend-Nginx. Hvis du endrer konfigurasjonen av bakgrunns-Nginx-serveren til: server { Hør 80; server_name lokalprogramleder; set_real_ip_from 192.168.3.0/24; set_real_ip_from 100.100.0.0/16; real_ip_header X-Real-IP;
Lokasjon / { rot-html; indeks index.html index.htm; }
……
}
Så gjør vi tilgangstesten igjen: Logger 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" Logger 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 sees at denne gangen registrerer bakgrunnen klientens IP-adresse.
|