A PHP Error was encountered

Severity: 8192

Message: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead.

Filename: mysql/mysql_driver.php

Line Number: 319

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

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


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

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