Содержание

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

Все, можно проверять логи.