Деякі наші інтерфейси передбачають зміни інформації користувача, і ці інтерфейси дозволяють лише стороні доступу налаштовувати нас, тому ми маємо білий список IP на nginx.
Він оснащений вихідною IP сторони доступу.
Ось логи з нашого доступу до nginx.
nginx приймає наш $remote_addr як справжню IP, але насправді $http_X_Forwarded_For — це справжня IP користувача, $remote_addr — це просто приватна мережева адреса нашого F5 (user -->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 — це реальне значення користувача, вказане попереднім агентом, тому присвоїть це значення власній змінній $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 довіри справа наліво у списку 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
|