Някои от нашите интерфейси включват промени в потребителската информация и тези интерфейси позволяват само на страната за достъп да ни настройва, така че имаме бял списък с IP в nginx.
Той е оборудван с изходния IP адрес на достъпната страна.
Ето логовете от нашия nginx достъп.
nginx приема нашия $remote_addr като реален IP, но всъщност $http_X_Forwarded_For е реалният IP на потребителя, $remote_addr е просто частният мрежов адрес на нашия f5 (потребител -->f5 ---> nginx), което води до това nginx да вземе грешно име и потребителят, който коригира интерфейса, винаги е 403.
Решение:
В http модула plus
set_real_ip_from 10.10.10.122; Кажи на nginx да вземе стойността на RealIP оттам
real_ip_header X-Real-IP; Името на променливата, която съхранява стойността на RealIP
Мога!
Тук започваме доклада за nginx след добавяне:
nginx: [emerg] unknown directive "set_real_ip_from" in /home/lnidmp/nginx/conf/nginx.conf:26
Затова добавяме realip модула и прекомпилираме 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
Съвети:
1. set_real_ip_from се отнася до реалния потребителски IP адрес, получен от който доверен предварително прокси
2. real_ip_header се отнася до потребителския IP адрес на предишното прокси предаване, от което се получава HTTP част от полученото съобщение
3. real_ip_recursive Дали да се изключва рекурсивно, докато потребителят IP не бъде получен (по подразбиране е изключен)
Първо, real_ip_header посоча име на HTTP заглавие, което по подразбиране е X-Real-IP.
(1) Ако има 1 IP, той ще провери дали IP адресът на подателя е в доверения IP списък, определен от set_real_ip_from. Ако е доверен, той ще мисли, че IP стойността в този X-Real-IP е реалната IP стойност на потребителя, казана от предишния агент, затова ще присвои тази стойност на собствената си $remote_addr променлива; Ако не се доверява, няма да бъде обработено, а $remote_addr все още е IP адресът на подателя.
(2) Ако X-Real-IP има няколко IP стойности, например, предишният прокси се задава така: proxy_set_header X-Real-IP $proxy_add_x_forwarded_for;
Това, което получавате, е поредица от IP адреси, така че стойността на real_ip_recursive е от решаващо значение в момента. nginx ще сравнява IP адресите в списъка с set_real_ip_from trust отдясно наляво в списъка с IP адреси. Ако real_ip_recursive е изключен, когато най-десният IP се окаже доверен IP, се смята, че следващият IP (вторият отдясно) е реалният IP на потребителя. Ако real_ip_recursive е включен, той ще бъде сравнен отдясно наляво, докато не намери недоверен IP адрес. След това копирай IP стойността и в $remote_addr.
Ресурси:
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
|