Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 17771|Відповідь: 1

[Веб] nginx отримує справжню IP-адресу користувача

[Копіювати посилання]
Опубліковано 19.05.2018 11:38:55 | | | |
Деякі наші інтерфейси передбачають зміни інформації користувача, і ці інтерфейси дозволяють лише стороні доступу налаштовувати нас, тому ми маємо білий список 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





Попередній:Карти сайтів Discuz генеруються автоматично
Наступний:Використовуйте балансування навантаження Alibaba Cloud для блокування IP-доступу до вебсайтів
Опубліковано 18.06.2018 14:57:50 |
Дивись, nginx отримує справжню IP
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com