|
Цей модуль дозволяє змінювати значення 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-адресу клієнта.
|