Noen av grensesnittene våre innebærer endringer i brukerinformasjon, og disse grensesnittene lar bare tilgangsparten justere oss, så vi har en IP-hviteliste på nginx.
Den er utstyrt med utgangs-IP-en til aksessparten.
Her er loggene fra vår nginx-tilgang.
nginx tar vår $remote_addr som den ekte IP-en, men faktisk er $http_X_Forwarded_For brukerens ekte IP, $remote_addr er bare den private nettverksadressen til vår f5 (bruker -->f5 --> nginx), noe som resulterer i at nginx tar feil navn og brukeren som justerer grensesnittet alltid er 403.
Løsning:
I http-modulen pluss
set_real_ip_from 10.10.10.122; Si til nginx at de kan hente verdien av RealIP derfra
real_ip_header X-Real-IP; Navnet på variabelen som lagrer RealIP-verdien
Boks!
Her starter vi nginx-rapporten etter å ha lagt til:
nginx: [emerg] unknown directive "set_real_ip_from" in /home/lnidmp/nginx/conf/nginx.conf:26
Så vi legger til realip-modulen og kompilerer nginx på nytt
1、cd /usr/local/nginx-1.6.3 2、./configure --prefiks=/usr/cmcc/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module 3、Make && make install
Tips:
1. set_real_ip_from refererer til den reelle bruker-IP-en som er hentet fra den betrodde pre-proxyen
2. real_ip_header refererer til bruker-IP-en til den forrige proxy-overføringen, hvorfra HTTP-delen av den mottatte meldingen er hentet
3. real_ip_recursive Om man skal ekskludere rekursivt til brukerens IP er oppnådd (standard er av)
Først spesifiserer real_ip_header et http-headernavn, som som standard er X-Real-IP.
(1) Hvis det er 1 IP, vil den sjekke om avsenderens IP er i den betrodde IP-listen spesifisert av set_real_ip_from. Hvis den er betrodd, vil den tro at IP-verdien i denne X-Real-IP er brukerens reelle IP-verdi fortalt av den tidligere agenten, så den vil tildele denne verdien til sin egen $remote_addr-variabel; Hvis det ikke er betrodd, vil det ikke bli behandlet, og $remote_addr er fortsatt avsenderens IP-adresse.
(2) Hvis X-Real-Ip har flere IP-verdier, for eksempel, settes den forrige proxyen slik: proxy_set_header X-Real-Ip $proxy_add_x_forwarded_for;
Det du får er en rekke IP-adresser, så verdien av real_ip_recursive er avgjørende akkurat nå. nginx vil sammenligne IP-adressene i set_real_ip_from trust-listen fra høyre til venstre i IP-listen. Hvis real_ip_recursive er av, tror man at når den høyre IP-en er en betrodd IP, antas det at neste IP (den andre til høyre) er brukerens ekte IP. Hvis real_ip_recursive er på, vil den bli sammenlignet fra høyre til venstre til den finner en ikke-pålitelig IP. Kopier deretter IP-verdien til $remote_addr også.
Ressurser:
https://help.aliyun.com/document_detail/54007.html
https://help.aliyun.com/knowledge_detail/55198.html
https://www.linux178.com/web/nginx-get-realip.html
|