После установки на VPS nginx в качестве кэширующего прокси для апача, последний перестал правильно определять IP адреса клиентов, получая вместо них, естественно, внешний адрес nginx. Не то, чтобы очень критично, но, согласитесь, неприятно. Решение было найдено быстро — необходимо установить rpaf модуль к апачу. Погуглив немного, нашел статью, вольный перевод которой и предлагаю ниже.
RPAF модуль не особо популярен, но реально необходим, если ваш апач находится за прокси, и вам важно знать реальные ip-адреса ваших клиентов. Суть его работы такова. Если во входящих заголовках (которые могут быть модифицированы nginx — определяйте их правильно) присутствует X-Forwarded-For header , то этот rpaf-модуль заменяет удаленный адрес клиента в соответствии со значением, полученным из X-Forwarded-For.
Как установить rpaf модуль к apache на CentOS 6.6?
Начальная конфигурация:
- CentOS release 6.6 (Final)
- VPS + ISP-manager
- nginx + Apache/2.2.15
Шаг 1.
Необходимо установить httpd-devel (и gcc со всеми зависимостями)
yum install httpd-devel
yum install gcc
Примечание. httpd-devel содержит в себе apxs — систему управления модулями Apache (чтобы не получить: bash: apxs: команда не найдена), ну и собственно компиллятор, если он у вас в системе еще не установлен.
Шаг 2.
Загрузить актуальную версию модуля mod_rpaf
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
У меня не сработало, ресурс stderr.net был не доступен, поэтому можно использовать зеркало:
wget http://mirror.trouble-free.net/sources/mod_rpaf-0.6.tar.gz
Шаг 3.
Распаковать и скомпилировать модуль:
tar zxvf 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
По окончании вы увидите что вроде того, что на скриншоте ниже:
Шаг 4.
Создайте mod_rpaf.conf файл:
nano /etc/httpd/conf.d/mod_rpaf.conf
Шаг 5.
Скопируйте строки ниже в созданный файл конфигурации:
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 X.X.X.X
RPAFheader X-Forwarded-For
где X.X.X.X — внешний ip сервера (или, вернее, ip nginx), соответственно, это значение укажет модулю rpaf какой хост отдает ему заголовки X-Forwarded-For
Шаг 6.
Не забудьте сохранить ваш файл конфигурации при выходе из редактора.
Шаг 7.
Рестартуйте Апач:
/etc/init.d/httpd restart
И наслаждайтесь!