В случае, когда Nginx используется как Frontend для Apache то возникает проблема с передачей IP адреса клиента в Apache, т.к. по умолчанию он будет видеть только адрес проксирующего Nginx сервера. Как настроить Nginx в качестве Frontend для Apache я рассказывал в статье Nginx, как frontend для нескольких серверов.
Для того, чтобы это исправить, нам потребуется изменить конфигурацию Nginx, чтобы он начал передавать адреса и установить модель для Apache – libapache2-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-инфраструктуре – это быть уверенным в завтрашнем дне. Для того, чтобы сделать заказ:
|
Большое спасибо за пост! Реально помогли, ни как не мог получить реальный IP клиента в апач.