|
Этот модуль позволяет менять значение 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-адрес. С версии 0.8.22 также можно использовать доверенные Unix-сокеты. Набор IP здесь относится к фронтендуNginx、ЛакилиКальмаризПротокол 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 Backend Nginx: 192.168.1.15 Хост клиента: 218.239.201.36 Конфигурация Nginx на фронтенде выглядит так: server { слушать 80; server_name www.xx.com;
Местоположение / { корень 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;
Местоположение / { корень 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-адрес клиента.
|