Nginx, Apache, REMOTE_ADDR 127.0.0.1
Ситуация: требовалась стандартная настройка Nginx в роли реверс-прокси, Apache 2.4.x в роли бэкенда, сверху все это придавлено Bitrix. При эксплуатации выяснилось, что в Битриксе (Рабочий стол → Настройки → Инструменты → Журнал событий) все IP адреса представляли собой 127.0.0.1 хотя, казалось бы, все было корректно настроено.
В процессе разборок выяснилось, что в Apache 2.4.x модуль rpaf работает криво (Version: 0.6-12) и требуется использовать имеющийся стандартный remoteip. Но в таком случае либо включаем remoteip и видим корректные адреса в админке Битрикса и 127.0.0.1 в логах веб-сервера, либо с точностью до наоборот - в логах красота, а в Битриксе любуемся на 127.0.0.1
Что же, будем скрещивать ужа и ежа: оба модуля будут работать вместе.
Apache
Ставим модуль rpaf:
# apt-get install libapache2-mod-rpaf # a2enmod rpaf # cat /etc/apache2/mods-enabled/rpaf.conf <IfModule rpaf_module> RPAFenable On RPAFsethostname Off RPAFproxy_ips 127.0.0.1 ::1 RPAFheader X-Real-IP </IfModule>
Включаем модуль remoteip:
# a2enmod remoteip # cat /etc/apache2/mods-enabled/remoteip.conf <IfModule remoteip_module> RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 127.0.0.1 </IfModule>
Перезапускаем apache2:
# service apache2 restart
Nginx
Добавляем в настройки сайта:
... location / { proxy_pass http://127.0.0.1:8080/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; ...
перезапускаем nginx:
# service nginx restart
Все, можно проверять логи.