Чтобы Apache получал от NGINX IP адрес посетителя вместо локального, необходимо установить модуль RPAF (mod_rpaf) для Apache.
В поисках правильных инструкций мною было найдено небольшое кол-во сайтов, но идеального результата, следуя по которому получилось бы установить mod_rpaf я не нашел. Где-то ссылки битые, где-то версия старая, а где-то не под мою ось…
Но мне удалось основываясь на несколько статей установить стабильную версию модуля на свой VDS с Debian/Ubuntu.
Понадобится apxs2 (APache eXtenSion tool). Ставится он в комплекте с другими средствами разработки под Apache:
apt-get update #обновим данные из репозитариев
apt-get install apache2-prefork-dev
Установка данного набора никак не влияет на текущую работу сервера Apache! Можно устанавливать смело.
Рестартим Apache
/etc/init.d/apache2 restart
Скачиваем и устанавливаем mod_rpaf
cd /usr/local/src
wget https://github.com/gnif/mod_rpaf/archive/stable.zip
unzip stable.zip
cd mod_rpaf*
Командой ls вы сможете увидеть в папке список файлов. Среди файлов должен быть файл mod_rpaf.c (либо с другим именем, содержащим версию) — вставляем его в следующую команду
apxs2 -i -c -n mod_rpaf.so mod_rpaf.c
Здесь mod_rpaf.so — имя файла-модуля для Apache2.
После выполнения команды будет создан файл с таким именем, также автоматически этот файл будет установлен в папку с остальными модулями Apache.
В моем случае эта папка /usr/lib/apache2/modules — необходимо обратить внимание на этот путь, так как он понадобится чуть позже.
Затем необходимо создать в папке /etc/apache2/mods-available/ два файла.
Первый файл — с настройками модуля mod_rpaf
Второй файл — с указанием пути к модулю для его загрузки апачем.
cd /etc/apache2/mods-available/
nano rpaf.conf
Вписываем в этот файл настройки, основываясь на README из репозитория https://github.com/gnif/mod_rpaf
У себя я вписал следующее:
RPAF_Enable On
RPAF_Header X-Forwarded-For
RPAF_SetHostName On
Закрываем файл с сохранением.
Создаем файл для загрузки модуля:
nano rpaf.load
Вписываем в него (обратите внимание на путь до файла *.so — выше я писал, что это за путь)
LoadModule rpaf_module /usr/lib/apache2/modules/mod_rpaf.so
Закрываем файл с сохранением.
Дальше включаем модуль и перезапускаем apache:
a2enmod rpaf
/etc/init.d/apache2 restart
Чтобы NGINX передавал IP адрес в Apache в секции server {…} настроек виртуальных хостов нужно прописать строчку
В конфиге nginx для нужных доменов внутри server {…} надо вписать:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
После перезапускаем nginx
service nginx restart
После всего этого у меня заработало и в различных логах и в комментариях начал фигурировать реальный ip адрес всместо 127.0.0.1
Проделал этот порядок установки на двух ВДС с Дебиан и Убунту.
Успехов!
Статья составлена на основе:
- https://github.com/gnif/mod_rpaf
- http://glebov-gin.blogspot.com/2011/09/modrpaf2-apache2nginx-debian-6.html
- http://xit.org.ru/installing-apache-module-mod_rpaf-with-https-support-on-centos-6-5/
2 в ответ на Установка mod_rpaf. Получаем реальный IP адрес при использовании NGINX + Apache: