Sommige van onze interfaces bevatten wijzigingen in gebruikersinformatie, en deze interfaces staan alleen toe dat de toegangspartij ons kan aanpassen, dus we hebben een IP-whitelist op nginx.
Het is uitgerust met het exit-IP van de toegangspartij.
Hier zijn de logs van onze nginx-toegang.
nginx neemt onze $remote_addr als het echte IP, maar in feite is $http_X_Forwarded_For het echte IP van de gebruiker, $remote_addr is gewoon het privé-netwerkadres van onze f5 (gebruiker -->f5 --> nginx), waardoor nginx de verkeerde naam aanneemt en de gebruiker de interface aanpast altijd 403 is.
Oplossing:
In de http-module plus
set_real_ip_from 10.10.10.122; Zeg tegen nginx dat ze de waarde van RealIP daar moeten halen
real_ip_header X-Real-IP; De naam van de variabele die de RealIP-waarde opslaat
Kunnen!
Hier beginnen we het nginx-rapport na toevoeging:
nginx: [emerg] unknown directive "set_real_ip_from" in /home/lnidmp/nginx/conf/nginx.conf:26
Dus voegen we de realip-module toe en compileren nginx opnieuw
1、cd /usr/local/nginx-1.6.3 2、./configureren --prefix=/usr/cmcc/nginx --met-http_stub_status_module --met-http_ssl_module --met-http_realip_module 3、Make & Make Install
Tips:
1. set_real_ip_from verwijst naar het echte gebruikers-IP waarvan vertrouwde pre-proxy is verkregen
2. real_ip_header verwijst naar het gebruikers-IP van de vorige proxytransmissie waaruit het HTTP-gedeelte van het ontvangen bericht is verkregen
3. real_ip_recursive Of recursief uitsluiten totdat het gebruikers-IP is verkregen (standaard staat uit)
Ten eerste specificeer real_ip_header een http-headernaam, die standaard X-Real-IP is.
(1) Als er 1 IP is, controleert het of het IP van de afzender in de door de set_real_ip_from gespecificeerde vertrouwde IP-lijst staat. Als het wordt vertrouwd, zal het denken dat de IP-waarde in deze X-Real-IP de echte IP-waarde van de gebruiker is die door de vorige agent is verteld, dus zal het deze waarde toewijzen aan zijn eigen $remote_addr-variabele; Als het niet wordt vertrouwd, wordt het niet verwerkt en is $remote_addr nog steeds het IP-adres van de afzender.
(2) Als X-Real-Ip meerdere IP-waarden heeft, wordt de vorige proxy als volgt ingesteld: proxy_set_header X-Real-Ip $proxy_add_x_forwarded_for;
Wat je krijgt is een reeks IP's, dus de waarde van real_ip_recursive is op dit moment cruciaal. nginx zal de IP's in de set_real_ip_from trustlijst van rechts naar links vergelijken in de IP-lijst. Als de real_ip_recursive niet klopt, wordt aangenomen dat het volgende IP (het tweede rechts) het echte IP van de gebruiker is, wanneer het meest rechts IP wordt gevonden. Als de real_ip_recursive aanstaat, wordt deze van rechts naar links vergeleken totdat er een niet-vertrouwd IP wordt gevonden. Kopieer vervolgens ook de IP-waarde naar $remote_adr.
Weg:
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
|