|
Ten moduł pozwala nam zmieniać wartość adresu IP klienta w nagłówku żądania klienta (np. X-Real-IP lub X-Forwarded-For). Ta funkcja jest bardzo przydatna dla serwerów Nginx, jeśli Nginx działa za niektórymi proxy'ami równoważenia obciążenia warstwy 7, ponieważ lokalny adres IP żądania klienta (czyli adres żądania klienta) jest dodawany do nagłówka adresu IP klienta podczas przechodzenia przez proxyj warstwy 7, dzięki czemu backend Nginx może uzyskać wartość adresu IP klienta. Moduł nie jest domyślnie zainstalowany, więc jeśli chcesz go używać, musisz dodać opcję --with-http_realip_module podczas kompilacji instalacji. Powodem użycia tego modułu jest to, że pozwala serwerowi w tle zapisywać adres IP oryginalnego klienta. Przykład konfiguracjiset_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP;
Palce Zamówienie Moduł dostarcza tylko dwie instrukcje. Nazwa instrukcji: set_real_ip_from Funkcja: Wskazanie zaufanego adresu za pomocą tego polecenia zostanie zastąpione dokładnym adresem IP. Zaufane gniazda Unix mogą być również używane od wersji 0.8.22. Zestaw IP odnosi się tutaj do frontenduNginx、LakierlubKałamarnicaofIPAdres. Składnia: set_real_ip_from [adres| CIDR|" UNIX:"] Wartość domyślna: brak Środowisko użytkowania: http, serwer, lokalizacja Nazwa instrukcji: real_ip_header Funkcja: To polecenie służy do określenia, którego nagłówka użyć do zastąpienia adresu IP. Jeśli użyto X-Forwarded-For, moduł zastąpi adres IP proxy front-end ostatnim adresem IP w nagłówku X-Forwarded-For. Składnia: real_ip_header [X-Real-IP| Przekierowane przez X] Domyślna wartość: real_ip_header X-Real-IP Środowisko użytkowania: http, serwer, lokalizacja Przypadki użycia W poniższym przykładzie nasze środowisko wygląda tak: są dwa serwery Nginx, jeden to frontend, drugi backend, frontend Nginx służy jako proxy, backend Nginx do udostępniania strony, a jest też klient z następującym adresem IP: Frontend Nginx: 192.168.7.10 Backend Nginx: 192.168.1.15 Host: 218.239.201.36 Konfiguracja Nginx na frontendzie wygląda tak: serwer { słuchać 80; server_name www.xx.com;
lokalizacja / { root html; indeks index.html index.htm; Charset utf-8; }
lokalizacja /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 Prowadzący $host; proxy_redirect zdejmiej; }
……
} Konfiguracja Nginx dla backendu wygląda następująco: serwer { słuchać 80; server_name lokalnego gospodarza;
lokalizacja / { root /var/www/html; indeks index.html index.htm; } Dostęp do testu Jeśli uzyskamy dostęp do http://www.xx.com/865, nie ma problemu, może to być normalny dostęp, log dostępu wygląda następująco: Logi z frontendu Nginx: 218.239.201.36 - - [30/Az/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" Logi z backendu 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" Widzimy, że logi backendowe Nginx nie rejestrują adresu IP oryginalnego klienta, lecz adres IP frontendu Nginx. Jeśli zmodyfikujesz konfigurację serwera Nginx w tle: serwer { słuchać 80; server_name lokalnego gospodarza; set_real_ip_from 192.168.3.0/24; set_real_ip_from 100.100.0.0/16; real_ip_header X-Real-IP;
lokalizacja / { root html; indeks index.html index.htm; }
……
}
Następnie ponownie wykonujemy test dostępu: Logi z frontendu 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" Logi z backendu Nginx: 218.239.201.36 - - [30/sie 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" Widać, że tym razem tło rejestruje adres IP klienta.
|