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

Вид: 15060|Відповідь: 0

[Веб] Фронтенд nginx і бекенд nginx записують IP-адресу оригінального клієнта

[Копіювати посилання]
Опубліковано 03.11.2014 09:53:23 | | |

Цей модуль дозволяє змінювати значення IP-адреси клієнта в заголовку запиту клієнта (наприклад, X-Real-IP або X-Forwarded-For).

    Ця функція дуже корисна для серверів Nginx, якщо Nginx працює за деякими проксі балансування навантаження рівня 7, оскільки локальна IP запиту клієнта (тобто адреса запиту клієнта) додається до заголовка IP-адреси клієнта при проходженні через проксі рівня 7, щоб бекенд Nginx міг отримати значення IP-адреси клієнта. Модуль не встановлений за замовчуванням, тому якщо ви хочете його використовувати, потрібно додати опцію --with-http_realip_module при компіляції інсталяції.

    Причина використання цього модуля полягає в тому, що він дозволяє фоновому серверу записувати IP-адресу оригінального клієнта.

Приклад конфігурації
set_real_ip_from 192.168.1.0/24;
set_real_ip_from 192.168.2.1;
real_ip_header X-Real-IP;


Пальці    Порядок

   Модуль містить лише дві інструкції.

Назва інструкції: set_real_ip_from

Функція: Вказування довіреної адреси через цю команду замінюється точною IP-адресою. Довірені Unix-сокети також можна використовувати з версії 0.8.22. IP-набір тут стосується фронтендуНгінксЛакабоКальмарзIPАдреса.

Синтаксис: set_real_ip_from [адреса| CIDR|" unix:"]

Значення за замовчуванням: немає

Середовище використання: http, сервер, розташування

Назва інструкції: real_ip_header

Функція: Ця команда використовується для вибору заголовка для заміни IP-адреси. Якщо використовується X-Forwarded-For, модуль замінює IP-адресу фронтенд-проксі на останню IP-адресу в заголовку X-Forwarded-For.

Синтаксис: real_ip_header [X-Real-IP| X-Forwarded-For]

Значення за замовчуванням: real_ip_header X-Real-IP

Середовище використання: http, сервер, розташування

Випадки використання   

    У наступному прикладі наше середовище виглядає так: є два сервери Nginx: один — фронтенд, інший — бекенд, фронтенд Nginx використовується як проксі, бекенд Nginx — для доступу до сторінок, а також є клієнт із такою IP-адресою:

  

    Фронтенд Nginx: 192.168.7.10

    Бекенд Nginx: 192.168.1.15

    Клієнт-хост: 218.239.201.36

    Конфігурація Nginx на фронтенді виглядає так:

server {
  слухати 80;
  server_name www.xx.com;

Розташування / {
    root html;
    індекс index.html index.htm;
CHARSET UTF-8;
  }

Розташування /865 {
    proxy_pass http://192.168.3.139:80/;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Ведучий $host;
    proxy_redirect геть;
  }

……
}

Конфігурація Nginx для бекенду виглядає так:

server {
  слухати 80;
  server_name місцевий ведучий;

  Розташування / {
    корінь /var/www/html;
    індекс index.html index.htm;
  }

Доступ до тесту

    Якщо ми отримуємо доступ до http://www.xx.com/865, без проблем, це може бути звичайний доступ, журнал доступу виглядає так:

    Логи з фронтенду Nginx:

218.239.201.36 - - [30/серпня/2011:16:09:56 +0800] "GET /865/ HTTP/1.1" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

Логи з бекенду Nginx:

192.168.7.10 - - [30/серпня/2011:16:09:56 +0800] "GET // HTTP/1.0" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

Ми бачимо, що логи бекенду Nginx не записують IP-адресу оригінального клієнта, а IP-адресу фронтенд-Nginx.

    Якщо змінити конфігурацію фонового сервера Nginx на:

server {
  слухати 80;
  server_name місцевий ведучий;
  set_real_ip_from 192.168.3.0/24;
set_real_ip_from 100.100.0.0/16;
  real_ip_header X-Real-IP;

  Розташування / {
    root html;
    індекс index.html index.htm;
  }

    ……
}

Потім ми робимо тест доступу знову:

    Логи з фронтенду Nginx:

218.239.201.36 - - [30/серпня/2011:16:10:28 +0800 "GET /865/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

     Логи з бекенду Nginx:

218.239.201.36 - - [30/серпня/2011:16:10:28 +0800] "GET // HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

Видно, що цього разу фоновий файл записує IP-адресу клієнта.







Попередній:Режим nginx proxy, отримати реальну IP-адресу клієнта
Наступний:Дістуз! X3.1 Усі версії X3 обходять дозвіл на завантаження вкладення без кредитів Вразливість необмеженого завантаження
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com