Модуль Apache mod_rpaf (reverse proxy add forward module) мне потребовалось установить для корректного отображения IP посетителей тех сайтов, которые обслуживаются бэкэндом Apache и принимает запрос от фронтэнда Nginx. Принимая запрос в лог записывается IP адрес локалхоста, на котором запущен Nginx, а должен быть отображен IP посетителя.
В противном случае это негативно скажется на сборе статистики и блокировке IP адресов атакующих наши сайты. Также у нас есть сайты, которые работают и на HTTPS, к сожалению mod_rpaf поставляемый из репозитория CentALT таких возможностей не даёт, да и сам репозиторий скорее мертв чем жив.
Установка
1 2 3 4 5 6 7 |
mkdir src cd src wget https://github.com/gnif/mod_rpaf/archive/stable.zip unzip stable.zip yum install httpd-devel make make install |
Настройка
-
Проверяем на месте ли модуль:
1 2 |
find /etc/httpd/modules/ -name *rpaf* -print /etc/httpd/modules/mod_rpaf.so |
-
Редактируем или создаем конфиг:
1 |
vi /etc/httpd/conf.d/mod_rpaf.conf |
-
Содержание конфига:
1 2 3 4 5 6 7 |
LoadModule rpaf_module modules/mod_rpaf.so RPAF_Enable On RPAF_ProxyIPs 127.0.0.1 10.0.0.0/24 RPAF_SetHostName On RPAF_SetHTTPS On RPAF_SetPort On RPAF_ForbidIfNotProxy Off |
-
Разбор опций:
- LoadModule — загружаем модуль указывая его имя и расположение
- Rpaf_Enable — включаем модуль
- Rpaf_ProxyIPs — ip адреса\подсети наших наших фронтегдов и\или vhost с уникальными ip, перечисление через пробел.
- Rpaf_SetHostName — включаем или отключаем передачу имени хоста
- Rpaf_SetHTTPS — включаем в окружение HTTPS переменную, значение которой будет содержаться в заголовках X-HTTPS, X-Forwarded-HTTPS. Может работать некорректно с включенным mod_ssl.
- RPAF_SetPort — включаем порт в заголовки X-Port, X-Forwarded-Port
- RPAF_ForbidIfNotProxy — включение опции запрещает запросы с IP, которые не перечислены в Rpaf_ProxyIPs.
- RPAF_Header — используется для задания заголовка, например: RPAF_Header X-Forwarded-For
Проверяем корректность конфига и перезапускаем Apache:
1 2 |
service httpd configtest service httpd restart |
1 |
tail -f /path/*access.log |