nginx apache mod_rpaf ispmanager

Применимость: «Linux, Centos, ISPmanager»

Слова для поиска: реальный IP адрес, real ip


Задача:

При работе вебсервера в режиме nginx + apache, HTTP запросы сначала обрабатываются с помощью nginx, а потом передаются apache.

HTTP запрос на apache происходит с IP адреса, на котором расположен nginx. mod_rpaf служит для восстановления настоящего (реального) IP для приложений которые выполняются на apache.

Решение:

Устанавливаем репозиторий ALTLinux для Centos:

rpm -ihv http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm

Если у вас версия системы 32 бита, то ваш репозиторий другой:

rpm -ihv http://centos.alt.ru/repository/centos/5/i386/centalt-release-5-3.noarch.rpm

Определить тип вашей системы можно командой:

uname -i
x86_64

x86_64 - означает, что у вас система 64 бита.

Полезно отключить этот репозиторий, чтобы система автоматически ничего лишнего не ставила из него:

vi /etc/yum.repos.d/centalt.repo

enabled=0

Установка пакета:

yum -y --enablerepo=CentALT install mod_rpaf

В файле конфигурации mod_rpaf - /etc/httpd/conf.d/00_rpaf.conf нужно добавить следующие строки:

LoadModule rpaf_module modules/mod_rpaf-.0.so                   
RPAFenable On                                                  
RPAFsethostname Off                                              
RPAFproxy_ips 127.0.0.1 xx.xx.xx.xx yy.yy.yy.yy              
RPAFheader X-Real-IP
Вместо xx.xx.xx.xx и yy.yy.yy.yy укажите IP адреса вашего сервера.

Рестарт Apache

service httpd restart

Проверяем работу модуля. В каталоге любого вашего домена создайте файл test-ip.php с таким содержимым:

<?PHP
echo $_SERVER['REMOTE_ADDR'];
?>

Откройте ссылку

http://<ваш домен>/test-ip.php

Если отображается IP, отличающийся от IP вашего сервера, модуль работает правильно.

Примечания:

  • Наличие ISPmanager не обязательно.
  • Эта конфигурация будет работать на любом другом дистрибутиве Linux, только нужно использовать соотвествующие репозитории.

Ссылки:


Актуальность: 2011/07/18 14:07