|
Questo modulo ci permette di modificare il valore dell'indirizzo IP del client nell'intestazione della richiesta client (ad esempio, X-Real-IP o X-Forwarded-For). Questa funzione è molto utile per i server Nginx se Nginx lavora dietro alcuni proxye di bilanciamento del carico di Layer 7, perché l'IP locale della richiesta del client (cioè l'indirizzo della richiesta del client) viene aggiunto all'intestazione dell'indirizzo IP del client quando si passa attraverso il proxy di Layer 7, così che il backend Nginx possa ottenere il valore dell'indirizzo IP del client. Il modulo non è installato di default, quindi se vuoi usarlo, devi aggiungere l'opzione --with-http_realip_module quando compili l'installazione. Il motivo per cui si utilizza questo modulo è che permette al server in background di registrare l'indirizzo IP del client originale. Esempio di configurazioneset_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP;
Dita Ordine Il modulo fornisce solo due istruzioni. Nome dell'istruzione: set_real_ip_from Funzione: Specificare un indirizzo affidabile tramite questo comando sarà sostituito da un indirizzo IP esatto. I socket Unix affidabili possono essere utilizzati anche dalla versione 0.8.22 in poi. L'IP impostato qui si riferisce al frontendNginx、VerniceoCalamarodiIPIndirizzo. Sintassi: set_real_ip_from [l'indirizzo| CIDR|" unix :"] Valore predefinito: nessuno Ambiente d'uso: http, server, posizione Nome dell'istruzione: real_ip_header Funzione: Questo comando serve a impostare quale header utilizzare per sostituire l'indirizzo IP. Se viene utilizzato X-Forwarded-For, il modulo sostituirà l'indirizzo IP del proxy front-end con l'ultimo indirizzo IP nell'intestazione X-Forwarded-For. Sintassi: real_ip_header [X-Real-IP| X-Forwarded-Per] Valore predefinito: real_ip_header X-Real-IP Ambiente d'uso: http, server, posizione Casi d'uso Nel seguente esempio, il nostro ambiente è così: ci sono due server Nginx, uno è il frontend e l'altro il backend, il frontend Nginx viene usato come proxy, e il backend Nginx serve a fornire accesso alle pagine, e c'è anche un client con il seguente indirizzo IP: Nginx Frontend: 192.168.7.10 Backend Nginx: 192.168.1.15 Ospite cliente: 218.239.201.36 La configurazione Nginx sul frontend appare così: server { ascolta 80; server_name www.xx.com;
Posizione / { root html; indice index.html index.htm; Charset UTF-8; }
Posizione /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 Conduttore $host; proxy_redirect off; }
……
} La configurazione Nginx per il backend è la seguente: server { ascolta 80; server_name localhost;
Posizione / { root /var/www/html; indice index.html index.htm; } Accedi al test Se accediamo al http://www.xx.com/865, nessun problema, può essere un accesso normale, il registro di accesso è il seguente: Logs dal frontend Nginx: 218.239.201.36 - - [30/Ago/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 dal backend Nginx: 192.168.7.10 - - [30/Ago/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" Vediamo che i log backend Nginx non registrano l'indirizzo IP del client originale, ma l'indirizzo IP del Nginx frontend. Se modifichi la configurazione del server Nginx in background per: server { ascolta 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;
Posizione / { root html; indice index.html index.htm; }
……
}
Poi rifacciamo il test di accesso: Logs dal frontend Nginx: 218.239.201.36 - - [30/Ago/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 dal 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" Si può vedere che questa volta lo sfondo registra l'indirizzo IP del client.
|