Nginx Apache и реальный IP клиента

В случае, когда Nginx используется как Frontend для Apache то возникает проблема с передачей IP адреса клиента в Apache, т.к. по умолчанию он будет видеть только адрес проксирующего Nginx сервера. Как настроить Nginx в качестве Frontend для Apache я рассказывал в статье Nginx, как frontend для нескольких серверов.
Для того, чтобы это исправить, нам потребуется изменить конфигурацию Nginx, чтобы он начал передавать адреса и установить модель для Apachelibapache2-mod-rpaf, который будет принимать правильные IP адреса.

Установим модуль:

apt-get install libapache2-mod-rpaf

изменим его настройки в файле /etc/apache2/mods-available/rpaf.conf

По умолчанию он настроен так, что прокси работаем на локальном адресе 127.0.0.1. Если это не так, то нужно изменить адрес в параметре RPAFproxy_ips.

Пример конфигурации:

RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 ::1

далее активируем модуль (если он не включился при установке):

a2enmod rpaf

и перезапускаем Apache:

service apache2 restart

Далее изменим настройки нашего прокси, чтобы он передавал в заголовке IP адреса клиентов (в примере он лежит в файле /etc/nginx/sites-available/proxy, и имеем симлинк в папке включенных сайтов):

server {
listen 80;
location / {
proxy_pass http://127.0.0.1:81;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

в данном случае целиком показан упрощенный конфигурационный файл.
изменения заключаются в добавлении строк:

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

которые добавляют новые заголовки, из которых и будет браться реальный IP адрес клиента.

Остается только перезапустить Nginx.

service nginx restart

Проверить правильность адресов можно посмотрев access.log ( по умолчанию он лежит в /var/log/apache2/)

Заказать создание и поддержку безопасной IT-инфраструктуры любой сложности

Быть уверенным в своей IT-инфраструктуре – это быть уверенным в завтрашнем дне.

Для того, чтобы сделать заказ:

Заполните форму обратной связи и мы обязательно с вам свяжемся:
Форма обратной связи
Позвоните нам по телефону:
+7(909)952-44-33
Напишите нам на электронную почту:
order@blackdiver.net
Напишите нам в Telegram:
Telegram
Другие способы связи Вы сможете найти в разделе Контакты.

Одна мысль про “Nginx Apache и реальный IP клиента”

  1. Большое спасибо за пост! Реально помогли, ни как не мог получить реальный IP клиента в апач.

Please Login to Comment.