Как передать реальный IP для Apache, работающем за прокси NGiNX
Начиная с Apache 2.4.1, в него входит модуль mod_remoteip, который может перезаписывать удаленный IP-адрес. Я рекомендую использовать mod_remoteip вместо mod_rpaf.
После того, как все настройки сервера в связке NGiNX + Apache сделаны, администратор сервера сталкивается с вопросом о том, как передать реальный IP пользователя web-серверу Apache, работающему за проксирующим NGiNX. В логи Апача пишутся IP не реальных пользователей, а IP локального NGiNX (127.0.0.1), то есть не несут никаких сведений о том, какой пользователь был на сайте.
Настройки Nginx
В локейшне с proxy_pass, обычно как указано ниже, добавим строки
location ~ \.php$ { proxy_pass http://127.0.0.1:8080; # + добавить: proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; }
После этой небольшой правки конфига NGiNX, нужно перезагрузить его, чтобы эти правки вступили в силу и начали работать на сервере. Для этого нужно ввести команду:
service nginx restart
Если всё скопировано правильно, NGiNX тихо перезапустится. Можно переходить к донастройке Apache, чтобы он принимал и обрабатывал пробрасываемые данные с реальным IP пользователя.
Настройки Apache
Для того, чтобы Apache начал правильно воспринимать и главное, правильно обрабатывать реальный IP пользователя, пробрасываемый NGiNX, воспользуемся идущим в стандартном пакете Apache модулем remoteip (mod_rpaf устарел).
Включить модуль remoteip в Ubuntu, Debian
a2enmod remoteip
Вначале настроим работу модуля remoteip. Для этого в папке conf-available создадим файл remoteip.conf. Полный путь до этого файла:
/etc/apache2/conf-available/remoteip.conf
В этот файл запишем пару строчек:
RemoteIPHeader X-Forwarded-For RemoteIPTrustedProxy 127.0.0.1
Теперь всё это нужно подключить к Apache. Подключим модуль remoteip к Apache. Но того мало, требуется применить настройки этого модуля. Для этого нужно выполнить команду:
a2enconf remoteip
Теперь модуль remoteip сконфигурирован и готов к работе. Осталось перезапустить Apache командой:
systemctl restart apache2
Готово! Все работает.
Читайте также
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах