|
Ez a modul lehetővé teszi, hogy módosítsuk az ügyfél IP-cím értékét a kliens kérés fejlécében (pl. X-Real-IP vagy X-Forwarded-For). Ez a funkció nagyon hasznos a Nginx szerverek számára, ha a Nginx néhány 7. réteg terheléselosztási proxy mögött működik, mivel a kliens kérésének helyi IP-címe (azaz az ügyfél kérés címe) hozzáadódik az ügyfél IP-cím fejlécéhez, amikor áthalad a 7. réteg proxyn, így a háttérrendszer Nginx megkaphatja az ügyfél IP-cím értékét. A modul alapértelmezetten nincs telepítve, így ha használni akarod a modult, akkor a --with-http_realip_module opciót kell hozzáadnod a telepítés fordításakor. Ennek a modulnak az oka, hogy lehetővé teszi a háttérszerver számára, hogy rögzítse az eredeti kliens IP-címét. Konfigurációs példaset_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP;
Ujjak Rend A modul csak két utasítást ad. Utasítás neve: set_real_ip_from Funkció: Egy megbízható cím megadása ezzel a parancsgal pontosan egy IP-címre vált. Megbízható Unix socketek is használhatók a 0.8.22-es verziótól kezdve. Az IP halmaz itt a frontendre utalNginx、LakkvagyTintahalofIPCím. Szintaxis: set_real_ip_from [a cím| CIDR|" Unix:"] Alapértelmezett érték: nincs Használati környezet: http, szerver, helyszín Utasítás neve: real_ip_header Funkció: Ez a parancs arra szolgál, hogy meghatározza, melyik fejlécet kell használni az IP-cím helyettesítésére. Ha az X-Forwarded-For funkciót használják, a modul a front-end proxy IP-címét az X-Forwarded-For fejlécében szereplő utolsó IP-címre cseréli. Szintaxis: real_ip_header [X-Real-IP| X-továbbítva] Alapértelmezett érték: real_ip_header X-Real-IP Használati környezet: http, szerver, helyszín Felhasználási esetek A következő példában a környezetünk így van: két Nginx szerver van, az egyik a frontend, a másik a backend, a frontend Nginx proxyként szolgál, a backend Nginx pedig oldalhozzáférés biztosítására, és van egy kliens is, amely a következő IP-címet használja: Frontend Nginx: 192.168.7.10 Backend Nginx: 192.168.1.15 Kliens hódista: 218.239.201.36 A frontend Nginx konfigurációja így néz ki: Server { Hallgasd 80; server_name www.xx.com;
helyszín / { root html; index index.html index.htm; UTF-8 charset; }
helyszín /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 Házigazda $host; proxy_redirect el; }
……
} A háttérrendszer Nginx konfigurációja a következő: Server { Hallgasd 80; server_name helyi házigazdá;
helyszín / { root /var/www/html; index index.html index.htm; } Hozzáférés a teszthez Ha hozzáférünk a http://www.xx.com/865-hez, gond nélkül, lehet normál hozzáférés, a hozzáférési napló a következő: Logok a frontend Nginx-ről: 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" Logok a háttérrendszerről Nginxről: 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" Látjuk, hogy a háttérben lévő Nginx naplók nem az eredeti kliens IP-címét rögzítik, hanem a frontend Nginx IP-címét. Ha módosítod a háttérben lévő Nginx szerver konfigurációját úgy, hogy a következőképpen módosítod: Server { Hallgasd 80; server_name helyi házigazdá; set_real_ip_from 192.168.3.0/24; set_real_ip_from 100.100.0.0/16; real_ip_header X-Real-IP;
helyszín / { root html; index index.html index.htm; }
……
}
Ezután újra megcsináljuk a hozzáférési tesztet: Logok a frontend Nginx-ről: 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" Logok a háttérrendszerről Nginxről: 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" Látható, hogy ezúttal a háttér rögzíti az ügyfél IP-címét.
|