Unele dintre interfețele noastre implică modificări ale informațiilor utilizatorului, iar aceste interfețe permit doar părții de acces să ne ajusteze, așa că avem o listă albă IP pe nginx.
Este echipat cu IP-ul de ieșire al părții de acces.
Iată jurnalele din accesul nostru nginx.
nginx ia $remote_addr ca IP real, dar de fapt, $http_X_Forwarded_For este IP-ul real al utilizatorului, $remote_addr este doar adresa privată de rețea a f5-ului nostru (utilizator -->f5 --> nginx), ceea ce duce la faptul că nginx ia numele greșit și utilizatorul care ajustează interfața este întotdeauna 403.
Soluție:
În modulul http plus
set_real_ip_from 10.10.10.122; Spune-i lui nginx să obțină valoarea RealIP de acolo
real_ip_header X-Real-IP; Numele variabilei care stochează valoarea RealIP
Putea!
Aici începem raportul nginx după ce adăugăm:
nginx: [emerg] unknown directive "set_real_ip_from" in /home/lnidmp/nginx/conf/nginx.conf:26
Așadar, adăugăm modulul realip și recompilăm nginx
1、cd /usr/local/nginx-1.6.3 2、./configure --prefix=/usr/cmcc/nginx --cu-http_stub_status_module --cu-http_ssl_module --cu-http_realip_module 3、Make & Make install
Sfaturi:
1. set_real_ip_from se referă la IP-ul real al utilizatorului obținut de la care pre-proxy de încredere
2. real_ip_header se referă la IP-ul utilizatorului transmisiei proxy anterioare din care se obține partea HTTP a mesajului primit
3. real_ip_recursive Dacă să excluzi recursiv până când IP-ul utilizatorului este obținut (implicitul este dezactivat)
În primul rând, real_ip_header specifica un nume de antet http, care este implicit X-Real-IP.
(1) Dacă există 1 IP, va verifica dacă IP-ul expeditorului se află în lista de IP-uri de încredere specificată de set_real_ip_from. Dacă este de încredere, va considera că valoarea IP din acest X-Real-IP este valoarea reală a IP-ului utilizatorului transmisă de agentul anterior, așa că va atribui această valoare propriei sale variabile $remote_addr; Dacă nu este de încredere, nu va fi procesat, iar $remote_addr rămâne adresa IP a expeditorului.
(2) Dacă X-Real-Ip are mai multe valori IP, de exemplu, proxy-ul anterior este setat astfel: proxy_set_header X-Real-Ip $proxy_add_x_forwarded_for;
Ceea ce obții este un șir de IP-uri, deci valoarea real_ip_recursive este crucială în acest moment. nginx va compara IP-urile din lista de încredere set_real_ip_from de la dreapta la stânga din lista de IP. Dacă real_ip_recursive este dezactivat, atunci când IP-ul cel mai din dreapta este considerat a fi de încredere, se crede că următorul IP (al doilea din dreapta) este IP-ul real al utilizatorului. Dacă real_ip_recursive este pornit, va fi comparat de la dreapta la stânga până găsește un IP nede de încredere. Apoi copiază și valoarea IP în $remote_addr.
Resurse:
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
|