CentOS и remoteip
Рабочий способ узнавать реальный IP на сервере с OS CentOS в связке Apache+Ningx
Al-Sher
Всем привет! Сегодня у меня возникла проблема, что при связке Apache+Nignx мы получаем ip сервера в глобальной переменно $_SERVER, то есть в $_SERVER["REMOTE_ADDR"]. Данная проблема связана с тем, что Apache получает страницу от Nignx, следовательно от локального сервера.
Для исправления данной проблемы раньше использовался модуль mod_rpaf, но, как я успел понять, в Apache 2.4.6 нет данного модуля. Поискав немного информации я наткнулся на модуль realip2, но и его у меня не оказалось(устанавливаться он так же отказывался).
Ну тогда я решил полазить по модулям, которые уже были установлены и наткнулся на remoteip, который пришел на замену вышеперечисленным модулям.
И так, как же его настроить, чтобы он возвращал реальный ip пользователя, а не ip локального сервера? Для этого мы должны "включить" данный модуль в файле конфигурации apache(httpd.conf), то есть выполнить команду
sudo nano /etc/httpd/conf/httpd.conf
Далее мы должны найти место, где заканчивается подключение модулей. У меня это было после строк
<IfModule mime_magic_module>
MIMEMagicFile conf/magic
</IfModule>
После подключения модулей мы подключаем наш:
<IfModule remoteip_module>
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 127.0.0.1
</IfModule>
На этом заканчивается настройка Apache, но так же нам лучше проверить конфигурацию Nignx. Для этого используем команду
sudo nano /etc/nginx/nginx.conf
Ищем строку
proxy_set_header X-Real-IP $remote_addr;
Если данной строки нет, то мы должны вписать её в location /
На этом я заканчиваю данную инструкцию по замене mod_rpaf модулем remoteip. Спасибо за внимание.