WHM / cPanel Apache 2 + Nginx + Real-IP с модулем апача mod_rpaf


Рубрика: Администрирование -> WHM / cPanel
Просмотров: 4682

Apache 2 + Nginx + реальный айпи с модулем апача mod_rpaf

И так, если у вас на сервере панель WHM / cPanel, то с ней вы конечно установили и Apache 2.

Но как известно, Apache2 довольно довольно сильно грузит сервер при большой посещаемости и по этому нам на помощь может прийти Nginx сервер.

Nginx сервер по сути хорошая альтернатива Apache 2, но к сожалению не всегда приемлемая в ряде случаев.

Вот и я не стал переходить полностью на Nginx с Apache 2, а воспользовался хорошей возможностью Nginx в совместной работе с Apache 2 - это прокси кешированием запросов, что значительно снизит нагрузку на сервер создаваемую Apache 2-ем

После того как вы установите Nginx в качестве прокси сервера для Apache 2 (как устанавливать много раз ужи писалось, найдете в интернете), возникнет следующая проблема, апач не будет видеть айпи пользователей. Так как все переходы будут через Nginx, то апачу будет передоваться айпи Nginx, т.е. айпи сервера на котором они оба установлены.

В ряде случаев это не важно, но иногда нужно, что бы скрипты получали айпи пользователя для дальнейшей их обработки, тогда нам нужно воспользоваться возможностями модуля Apache mod_rpaf .

Что такое mod_rpaf?

Модуль rpaf служит для передачи реального айпи мользователя после обработки его сервером Nginx

Установка mod_rpaf

Скачать с сайта последнюю версию можно здесь: http://stderr.net/apache/rpaf/download/

Заходим на сервер через консоль и выполняем следующие команды:

cd /usr/local/src
 wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
 tar xvfz mod_rpaf-0.6.tar.gz
 cd mod_rpaf-0.6
 /usr/local/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

Все mod_rpaf уже установлен, теперь только нужно подключить.

Как подключить mod_rpaf ?

Подключение mod_rpaf через WHM 11.34.1 (build 7):

1. Заходим в панель WHM

2. Далее открываем Service Configuration > Apache Configuration

3. Выбираем Include Editor

4. Далее Pre Main Include

5. После I wish to edit the Pre Main configuration include file for: выбираем во вкладке вашу версию Apache

6. Далее вписываем в открывшееся окно следующий код:

LoadModule rpaf_module modules/mod_rpaf-2.0.so
# Загружаем сам модуль
RPAFenable On
# Включаем обратный прокси сервер
RPAFproxy_ips 127.0.0.1 x.x.x.x
# Вместо иксов добавляем список IP-адресов, управляемых с помощью Cpanel, пишем через пробел
RPAFsethostname On
# let rpaf update vhost settings allowing to have
# the same hostnames as in the “actual” configuration for the
# forwarding apache installation
RPAFheader X-Real-IP
# Allows you to change which header we have mod_rpaf looking for
# when trying to find the ip the that is forwarding our requests

То же самое все можно сделать не через WHM, а на прямую через консоль.

Находим файл конфигурации Apache, у меня он по адресу

/usr/local/apache/conf/httpd.conf , и вписываем выше приведенные команды.

Я же все вынес в отдельный файл rpaf.conf , который расположил по адресу /usr/local/apache/conf/includes/rpaf.conf

А в файл httpd.conf вместо внесения всего кода, добавил вызов файла rpaf.conf , строка:

Include "/usr/local/apache/conf/includes/rpaf.conf"

В настойках самого Nginx должны быть активными (со снятым знаком #) следующие команды:

proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
root /var/www/$host/web;
index index.html index.htm index.php;
access_log off;
proxy_pass http://127.0.0.1:81;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

В каком именно месте не скажу вам, так как у меня они по разным файлам уже были разбросаны и мне не пришлось ничего добавлять.

Настройки ищите по адресу /etc/nginx/

После настроек апача и никса не забудьте их перезагрузить

service httpd restart

/etc/init.d/nginx stop

/etc/init.d/nginx start

Как проверить, работает ли установленный модуль rpaf?

На любом из доменов, которые расположены на Вашем сервере, разместите файл test.php с содержимым:

Далее зайдите по ссылке http://domain.ru/test.php, где domain.ru - имя вашего домена. Если как результат отображается IP, отличающийся от IP вашего сервера, модуль работает корректно

Автор: BuxarNET (Тяшкевич Виталий) для IntFAQ.ru, по инструкции от хостинг провайдера Buxar-Host.ru


  • Комментариев: 0

  • Вконтакте

  • Facebook:

    Оставьте комментарий!

    grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

    Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

    Имя и сайт используются только при регистрации

    Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

    Авторизация 

    (обязательно)