Я запускаю интерфейс 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
mod_remoteip
вместоmod_rpaf
.mod_rpaf устарел в Debian Jessie, и дальнейшее развитие остановлено. Переключитесь на mod_remoteip, который является модулем по умолчанию в Debian Jessie.
источник
Просто обновление к этому вопросу. Формат переменных, используемых mod_rpaf, изменился - Apache откажется начинать с перечисленных выше в настоящее время (RPAFenable, RPAFsethostname, RPAFproxy_ips, RPAFheader).
Новый формат выглядит следующим образом:
источник