Go to content Go to menu Go to search

Отображение реальных IP клиентов в логах apache (httpd), когда он стоит за nginx proxy (на примере C

Проблема

При использовании связки nginx – apache (nginx в качестве frontend) в логах апача получаем вместо IP клиента IP nginx. В результате скрипты или PHP не получают реального IP клиента, что не есть гуд.

Решение

В конфиге Nginx добавляем (внутри тэга location):

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;

В apache необходимо установить модуль mod_rpaf, брать его нужно в репозитории webtatic:

Для CentOS, RHEL или Fedora 7:

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Для CentOS, RHEL или Fedora 6:

rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

Для CentOS, RHEL или Fedora 5:

rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm

А пока пакет не появился в других репозиториях у меня лично есть готовые rpm-ки: mod_rpaf-0.6-3.i386.rpm mod_rpaf-0.6-3.x86_64.rpm

Ставим

rpm -ivh http:// valynkin .ru/mod_rpaf-0.6-3.i386.rpm

или

rpm -ivh http:// valynkin .ru/mod_rpaf-0.6-3.x86_64.rpm

В /etc/httpd/conf.d/rpaf.conf указываем с какого IP к нам приходят запросы от nginx например:

RPAFproxy_ips 172.17.0.4

Рестартуем апач

/etc/init.d/httpd restart

проверяем появились ли правильные IP

tail -f /var/log/httpd/access_log

Готово.


при публикации материалов с данного сайта обратная ссылка на сайт обязательна.
valynkin.ru © no rights reserved