Текущая страница: ГлавнаяНастройка сервера → Модуль rpaf - установка и настройка.

Модуль rpaf — установка и настройка.

Устанавливаем модуль Rpaf:
aptitude install libapache2-mod-rpaf
Проверяем список загруженных модулей:
apachectl -M | grep rpaf
Результат:
rpaf_module (shared)
Содержимое файла /etc/apache2/mods-available/rpaf.conf

RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 YourRealIP1 YourRealIP2
RPAFHeader X-Forwarded-For

Какую именно переменную выставлять, зависит от того что устаналивает nginx
Смотрим phpinfo:
Cекция HTTP Headers Information переменная X-Forwarded-For.
или
Cекция HTTP Headers Information переменная X-Real-IP.
Модуль rpaf устанавливает переменную сервера REMOTE_ADDR
из заданной переменной окружения.
Содержимое файла /etc/apache2/mods-available/rpaf.load
LoadModule /usr/lib/apache2/modules/mod_rpaf-2.0.so
В предустановленным файле было:
LoadModule /usr/lib/apache2/modules/mod_rpaf.so
Как ставилась 2.0:
aptitude install apache2-dev
wget http://www.stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
wget http://www.be-root.com/downloads/mod_rpaf/mod_rpaf-2.0.patch
Распаковываем архив, кладем патч в распакованный каталог и применяем:
patch -p0 < mod_rpaf-2.0.patch
(если не применить патч, скомпилировать не получится, в исходниках используется параметр remote_ip, а надо client_ip, если у вас все компилируется без патча, применять его не надо)
Компилируем:
apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
В Nginx устанавливаем дополнительно переменную окружения:

proxy_set_header X-Real-IP $remote_addr;

Рестартуем nginx проверяем в phpinfo значение переменных окружения.
После этого в файле /etc/apache2/mods-available/rpaf.conf можно записать:
RPAFheader X-Real-IP
Замечание 1:
Также модуль устанавливает переменную Hostname из переменной окружения X-Host в случае установки RPAFsethostname On
Замечание 2:
В ряде случаев на разных версиях встречается разное использование проверки загрузки модуля в конфиг файле.

не срабатывает: <IfModule mod_rpaf.c>
срабатывает:    <IfModule mod_rpaf-2.0.c>
или так:        <IfModule rpaf_module>

Результат:
Ничего так и не заработало. Печальная картина в Ubuntu 14.01 LTS Но выход есть.
Существует модуль mod_remoteip Он устанавливается вместе с Apache, но по умолчанию не включен.
Смотрим файл
/etc/apache2/mods-available/remoteip.load
Видим там следующее:
LoadModule remoteip_module /usr/lib/apache2/modules/mod_remoteip.so
Дописываем в этот файл строки:
RemoteIPHeader X-Real-IP
RemoteIPInternalProxy 127.0.0.1
Включаем его:
a2enmod remoteip
service apache2 restart
Все работает.

Добавить комментарий