Niektoré naše rozhrania zahŕňajú zmeny v používateľských údajoch a tieto rozhrania umožňujú len prístupovej strane nás prispôsobovať, takže máme IP whitelist na nginx.
Je vybavený výstupnou IP adresou prístupovej strany.
Tu sú záznamy z nášho prístupu k nginx.
nginx berie našu $remote_addr ako skutočnú IP, ale v skutočnosti je $http_X_Forwarded_For skutočná IP používateľa, $remote_addr je len súkromná sieťová adresa nášho F5 (používateľ -->f5 --> nginx), čo spôsobuje, že nginx používa nesprávne meno a používateľ upravujúci rozhranie je vždy 403.
Riešenie:
V HTTP module plus
set_real_ip_from 10.10.10.122; Povedz nginx, aby získal hodnotu RealIP odtiaľ
real_ip_header X-Real-IP; Názov premennej, ktorá ukladá hodnotu RealIP
Môcť!
Tu začíname správu nginx po pridaní:
nginx: [emerg] unknown directive "set_real_ip_from" in /home/lnidmp/nginx/conf/nginx.conf:26
Takže pridáme modul realip a prekompilujeme 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 skutočnú používateľskú IP získanú od ktorej dôveryhodný pre-proxy
2. real_ip_header označuje používateľskú IP adresu predchádzajúceho proxy prenosu, z ktorého sa získava HTTP časť prijatej správy
3. real_ip_recursive Či rekurzívne vylučovať, kým sa nezíska používateľská IP adresa (predvolené nastavenie je vypnuté)
Najprv real_ip_header špecifikovať názov HTTP hlavičky, ktorý je predvolene X-Real-IP.
(1) Ak je k dispozícii 1 IP adresa, skontroluje, či je IP odosielateľa v zozname dôveryhodných IP iv určených set_real_ip_from. Ak je dôveryhodný, bude si myslieť, že IP hodnota v tejto X-Real-IP je skutočná IP hodnota používateľa, ktorú povedal bývalý agent, a preto túto hodnotu priradí svojej vlastnej $remote_addr premennej; Ak nie je dôveryhodný, nebude spracovaný a $remote_addr je stále IP adresa odosielateľa.
(2) Ak má napríklad X-Real-Ip viacero IP hodnôt, predchádzajúci proxy je nastavený takto: proxy_set_header X-Real-Ip $proxy_add_x_forwarded_for;
Dostanete reťazec IP, takže hodnota real_ip_recursive je v tomto čase kľúčová. nginx porovná IP adresy v set_real_ip_from zozname dôvery sprava doľava v zozname IP. Ak je real_ip_recursive nesprávna, potom keď sa zistí, že pravá IP je dôveryhodná, predpokladá sa, že ďalšia IP (druhá napravo) je skutočná IP používateľa. Ak je real_ip_recursive zapnutý, porovná sa sprava doľava, kým nenájde nedôveryhodnú IP adresu. Potom skopírujte IP hodnotu aj do $remote_addr.
Zdroje:
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
|