Crossroads » Linux » Apache 2.4 + Nginx и IP-адреса клиентов

Apache 2.4 + Nginx и IP-адреса клиентов

  • Dislike
  • 0
  • Like
Если на сервере вы используете связку Apache и реверс-прокси Nginx, то наверняка сталкивались с проблемой, при которой Nginx не передаёт в Apache ip-адреса клиентов, и они отображаются как локальные 127.0.0.1.

В предыдущих версиях Apache проблема решалась установкой модуля mod_rpaf (libapache2-mod-rpaf). В Ubuntu 14.04 и Debian 8 (Jessie) Apache версии 2.4 и mod_rpaf там не работает как надо. Если и работает, то требует каких-нибудь дополнительных костылей, в которых мне было лень разбираться.

В Ubuntu 14.04 и Debian 8 Apache 2.4 скомпилирован с модулем mod_remoteip, что является рекомендованным решением вышеуказанной проблемы. Однако по каким-то причинам «из коробки» это не работает.

И так, для передачи ip-адресов из Nginx в Apache нужно включить данный модуль.

a2enmod remoteip


Выключите mod_rpaf, если он был включен.

a2dismod rpaf


В /etc/apache2/conf-available/ должен находится конфигурационный файл модуля mod_remoteip «remoteip.conf», однако его там скорее всего нет. Необходимо вручную создать его, прописав в нём следующее:

RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 127.0.0.1


Включаем конфигурацию.

a2enconf remoteip


Перезагружаем Apache.

service apache2 restart


Если Apache в логах продолжает указывать адреса 127.0.0.1 как внешние, то в «apache2.conf» нужно добавить следующее:

LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined


Если после всего этого адреса по-прежнему выглядят как 127.0.0.1, то стоит проверить конфигурацию хостов в Nginx на наличие следующей строки:

proxy_set_header X-Real-IP $remote_addr;


Если раньше у вас всё работало, и проблема возникла только после перехода на Apache 2.4, то конфигурация Nginx в порядке и её трогать ненужно.
Like Dislike

___
Tatyana K.



Tags: Linux, Apache, Nginx


 
  • Creative Commons Licence
  • Norton Safeweb
  • Website Uptime Monitoring By ServiceUptime.com