Некоторые наши интерфейсы связаны с изменениями пользовательской информации, и эти интерфейсы позволяют только стороне доступа настраивать нас, поэтому у нас есть белый список 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) Если IP 1, он проверит, находится ли IP отправителя в списке доверенных IP, указанных set_real_ip_from. Если ему доверяют, он будет считать, что значение IP в этом X-Real-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 пользователя. Если 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
|