Проблемы с mod_rpaf с фронтальной частью Nginx, серверной частью Apache после обновления Ubuntu


10

Я запускаю интерфейс Nginx для статических файлов и проксирую на сервер Apache для PHP и Passenger, используя Apache mod_rpaf для установки правильного удаленного IP-адреса на сервере. Все работало нормально, пока я не обновился до Ubuntu 12.04 (Precise). Теперь Apache сообщает обо всех подключениях, начиная с 127.0.0.1.

Вот соответствующая конфигурация. Здесь ничего не изменилось с обновлением.

Nginx:

proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;

mod_rpaf:

<IfModule mod_rpaf.c>
    RPAFenable On
    RPAFsethostname On
    RPAFproxy_ips 127.0.0.1 ::1
    RPAFheader X-Forwarded-For
</IfModule>

Я использую %{X-Forwarded-For}iв своей директиве Apache LogFormat, и журналы доступа показывают правильный удаленный адрес, поэтому я знаю, что Nginx передает адрес правильно.

В phpinfo()тесте HTTP_X_FORWARDED_FOR показывает правильный удаленный адрес, но REMOTE_ADDR - 127.0.0.1. Это отражается и в приложениях PHP, таких как комментарии WordPress.

Я попытался переключить Nginx и mod_rpaf на X-Real-IP без эффекта.

Что-то изменилось, что я пропустил?

Информация о соответствующей версии, все установлено из репозитория Ubuntu:

Nginx 1.1.19
Apache 2.2.22
mod_rpaf 0.6

Ответы:


10

Просто занимался этим сам. В пятницу была подтверждена ошибка Ubuntu. Вы можете снова начать работать, изменив:

<IfModule mod_rpaf.c>

в

<IfModule mod_rpaf-2.0.c>

в /etc/apache2/mods-available/rpaf.conf


У меня была точно такая же проблема после обновления до 12.04 и я потерял полдня по этому вопросу, прежде чем нашел этот пост. Спасибо!
Кубер Сапарев

И сама ошибка, для полноты картины : bugs.launchpad.net/ubuntu/+source/libapache2-mod-rpaf/+bug/...
Thor

1
Для всех, кто придет на этот пост после обновления до 14.04, это исправление больше не будет применяться; вместо этого вы захотите использовать mod_remoteipвместо mod_rpaf.
Стефан Магнусон

1

mod_rpaf устарел в Debian Jessie, и дальнейшее развитие остановлено. Переключитесь на mod_remoteip, который является модулем по умолчанию в Debian Jessie.


0

Просто обновление к этому вопросу. Формат переменных, используемых mod_rpaf, изменился - Apache откажется начинать с перечисленных выше в настоящее время (RPAFenable, RPAFsethostname, RPAFproxy_ips, RPAFheader).

Новый формат выглядит следующим образом:

LoadModule              rpaf_module modules/mod_rpaf.so
RPAF_Enable             On
RPAF_ProxyIPs           127.0.0.1 10.0.0.0/24
RPAF_SetHostName        On
RPAF_SetHTTPS           On
RPAF_SetPort            On
RPAF_ForbidIfNotProxy   Off
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.