Některá naše rozhraní zahrnují změny v uživatelských informacích, a tato rozhraní umožňují upravovat pouze přístupovou stranu, takže máme na nginx whitelist IP.
Je vybaven výstupní IP adresou přístupové strany.
Tady jsou záznamy z našeho přístupu nginx.
nginx bere náš $remote_addr jako skutečnou IP, ale ve skutečnosti je $http_X_Forwarded_For skutečná IP uživatele, $remote_addr je jen soukromá síťová adresa našeho F5 (uživatel -->f5 --> nginx), což vede k tomu, že nginx převezme špatné jméno a uživatel upravuje rozhraní vždy jako 403.
Řešení:
V HTTP modulu plus
set_real_ip_from 10.10.10.122; Řekni nginx, aby tam získal hodnotu RealIP
real_ip_header X-Real-IP; Název proměnné, která ukládá hodnotu RealIP
Konev!
Zde začínáme zprávu nginx po přidání:
nginx: [emerg] unknown directive "set_real_ip_from" in /home/lnidmp/nginx/conf/nginx.conf:26
Takže přidáme modul realip a překompilujeme nginx
1、cd /usr/local/nginx-1.6.3 2、./configure --prefix=/usr/cmcc/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module 3、Make & Make install
Tipy:
1. set_real_ip_from označuje skutečné uživatelské IP získané od důvěryhodného pre-proxy
2. real_ip_header označuje uživatelskou IP předchozího proxy přenosu, ze kterého byla získána HTTP část přijaté zprávy
3. real_ip_recursive Zda rekurzivně vylučovat, dokud není získána uživatelská IP adresa (výchozí nastavení je vypnuto)
Nejprve real_ip_header specifikovat název hlavičky http, což je ve výchozím nastavení X-Real-IP.
(1) Pokud je k dispozici 1 IP, zkontroluje, zda je IP odesílatele v seznamu důvěryhodných IP adres určených set_real_ip_from. Pokud je důvěryhodný, bude si myslet, že IP hodnota v této X-Real-IP je skutečná IP hodnota uživatele uvedená bývalým agentem, takže tuto hodnotu přiřadí své vlastní proměnné $remote_addr; Pokud není důvěryhodný, nebude zpracován a $remote_addr je stále IP adresa odesílatele.
(2) Pokud má X-Real-Ip například více IP hodnot, předchozí proxy je nastaveno takto: proxy_set_header X-Real-Ip $proxy_add_x_forwarded_for;
Dostanete řetězec IP adres, takže hodnota real_ip_recursive je v tuto chvíli zásadní. nginx porovná IP adresy v seznamu důvěry set_real_ip_from zprava doleva v seznamu IP. Pokud je real_ip_recursive nesprávný, pak když se zjistí, že nejpravější IP je důvěryhodná, předpokládá se, že další IP (druhá vpravo je) je skutečná IP uživatele. Pokud je real_ip_recursive zapnutý, bude porovnáván zprava doleva, dokud nenajde nedůvěryhodnou IP adresu. Pak zkopírujte IP hodnotu i do $remote_addr.
Prostředky:
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
|