Устанавливаем модуль mod_rpaf на CentOS (связка nginx+apache)
Если кто не знает, процесс «проброски» реального клиентского IP к серверу обеспечивается модулем mod_rpaf для Apache. При комбинировании nginx+apache, почти всегда возникает проблема в логах Апача – вместо реального айпи туда записывается localhost (127.0.0.1 или другой, если он переназначался). В то время как с логами nginx все нормально.
Давайте решим эту проблему!
Этап №1 – установка необходимых пакетов.
yum install httpd-devel gcc
Этап №2 – загрузка mod_rpaf.
cd /tmp
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
Если скачать не получается, просто добавьте в /etc/hosts:
178.236.176.177 stderr.net
Этап №3 – сбор модуля с последующей установкой.
tar xvzf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
cd
Этап №4 – конфигурирование mod_rpaf.
LoadModule rpaf_module modules/mod_rpaf-2.0.so
# mod_rpaf Configuration
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 10.0.0.1
RPAFheader X-Forwarded-For
Важно: в параметре RPAFproxy_ips нужно вписать айпи, где слушает nginx. В 99% случаев подойдет 127.0.0.1
Этап №5 – подстройка конфигурации vhost в nginx.
Заходим в раздел location / и вносим туда:
proxy_pass http://apache_ip:apache_port/;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
Этап №6 – перезагрузка и тест.
/etc/init.d/httpd restart
/etc/init.d/nginx restart
Далее открываем свой сайт и смотрим лог-файл.
Сейчас:
tail /var/log/nginx/access.log
12.34.56.78 - - [01/May/2014:11:44:44 +0300]
Раньше:
tail /var/log/nginx/access.log
127.0.0.1 - - [01/May/2014:11:42:44 +0300]
Если вдруг способ вам не помог, внимательно пересмотрите инструкцию с самого начала. В некоторых местах нужно было вносить правки, актуальные для вашего сервера. Также пересмотрите error_log.