Инструменты пользователя

Инструменты сайта


nginx_apache_mod_rpaf

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

nginx_apache_mod_rpaf [2018/08/20 02:47] (текущий)
Строка 1: Строка 1:
 +====== Nginx Apache mod_rpaf ======
 +{{htmlmetatags>​
 +metatag-description=(Настройка связки Apache и Nginx при помощи mod_rpaf используется для снижения общей нагрузки на веб-сервер.)
 +}}
 +
 +{{ ::​mod_rpaf-01.jpg?​nolink&​600 |}}
 +
 +Установка связки [[Nginx]], [[Apache]] и [[mod_rpaf]].
 +
 +  * **Ubuntu**
 +Установка nginx 7.65 в Ubuntu 10.04.3 LTS<​file>​
 +# aptitude install nginx
 +</​file>​
 +Для установки более свежей версии (1.0.5 stable) нужно подключить репозиторий [[https://​launchpad.net/​~nginx/​+archive/​development|Nginx PPA]] на Launchpad.<​file>​
 +# aptitude install python-software-properties
 +
 +# add-apt-repository ppa:​nginx/​stable
 +или add-apt-repository ppa:​nginx/​development если нужно установить последнюю нестабильную версию
 +# aptitude update
 +# aptitude install nginx
 +</​file>​
 +  * **Debian** можно подключить для Debian Squeeze порты от Wheezy и добавить сторонний репозиторий
 +<​file>​
 +# nginx 
 +deb http://​mirror.yandex.ru/​debian/​ wheezy main
 +deb-src http://​mirror.yandex.ru/​debian/​ wheezy main
 +</​file>​
 +<​file>​
 +# nginx -V
 +nginx version: nginx/​1.1.11
 +built by gcc 4.6.2 (Debian 4.6.2-4)
 +</​file>​
 +или же можно добавить репозиторий [[http://​www.dotdeb.org|The repository for Debian-based LAMP servers]] и ключ к нему
 +<​file>​
 +deb http://​packages.dotdeb.org squeeze all
 +deb-src http://​packages.dotdeb.org squeeze all
 +# wget -q -O - http://​www.dotdeb.org/​dotdeb.gpg | apt-key add -
 +</​file>​
 +====== mod_rpaf: cвязка Apache и Nginx ======
 +Для связки [[Apache]] и [[Nginx]] существует несколько вариантов:​
 +  * при помощи [[mod_rpaf]] предварительно установив его из исходных кодов или из репозитория<​file>​
 +# aptitude install libapache2-mod-rpaf
 +</​file>​
 +  * при помощи модуля [[mod_extract_forwarded]] обеспечивающего функциональность аналогичную [[mod_rpaf]].
 +
 +**Теория**:​ запрос клиента приходит на nginx, nginx запрашивает Apache, при этом HTTP- заголовок HOST теряется,​ а адрес клиента REMOTE_ADDR Apache определит как 127.0.0.1. Заголовок HOST подставим в настройках nginx<​file>​
 +# nano /​etc/​nginx/​proxy_params
 +proxy_set_header Host $host;
 +proxy_set_header X-Real-IP $remote_addr;​
 +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;​
 +</​file>​Но REMOTE_ADDR Apache определяет сам. Решается эта проблема при помощи mod_rpaf. Работает он следующим образом:​ Nginx знает IP клиента и добавляет некий HTTP-заголовок (например X-Real-IP), в который прописывает этот IP. mod_rpaf получает этот заголовок и прописывает его содержимое в переменную REMOTE_ADDR Apache. Таким образом,​ php-скрипты,​ выполняемые Apache будут видеть реальный IP клиента.
 +<note important>​Убедитесь что устанавливаемая версия mod_rpaf не ниже чем 0.6 иначе директива RPAFheader работать не будет. </​note>​
 +Для связки Apache и nginx нужен установленный модуль mod_rpaf не ниже версии 0.6. Установка из исходных кодов описана в [[mod_rpaf]].<​file bash>
 +aptitude install libapache2-mod-rpaf
 +</​file>​ Настроим mod_rpaf:<​file>​
 +# nano /​etc/​apache2/​mods-enabled/​rpaf.load
 +LoadModule rpaf_module /​usr/​lib/​apache2/​modules/​mod_rpaf.so
 +</​file>​В конфигурационный файл mod_rpaf нужно изменения(добавить) параметры.<​file>​
 +# nano /​etc/​apache2/​mods-enabled/​rpaf.conf
 +
 +# Включить модуль
 +RPAFenable On
 +# Исправить поле HOST
 +RPAFsethostname Off
 +# Список IP front-end (один или больше)
 +RPAFproxy_ips 127.0.0.1 Your_Real_IP
 +# Какое поле заголовка брать для замены X-Real-IP или X-Forwarded-For
 +RPAFheader X-Forwarded-For
 +</​file>​
 +  * Пример простого виртуального хоста, который только перенаправляет запросы Apache
 +<​file>​
 +server {
 +        listen ​      80;
 +        server_name ​ YourNameDomen.com;​
 +
 +        error_log ​  /​var/​log/​nginx/​error.log ​ info;
 +        access_log ​ /​var/​log/​nginx/​access.log;​
 +
 +    location / {
 +        proxy_pass http://​127.0.0.1:​81/;​
 +    }
 +}
 +</​file>​
  
nginx_apache_mod_rpaf.txt · Последние изменения: 2018/08/20 02:47 (внешнее изменение)