Допустим, у вас двухуровневая конфигурация веб-сервера – фронтенд nginx + бекенд Apache 2. Тогда при стандартной настройке Apache 2 тот будет видеть, что обращения идут с одного IP-адреса, а именно IP-адреса вашего сервера, ведь именно с него nginx совершает запросы. Проверить это можно простеньким PHP-скриптом:
<?php print $_SERVER['REMOTE_ADDR'];?>
Действительно, в этом случае вне зависимости от адреса клиента у меня отображалось 83.246.222.22 (IP-адрес сервера oioki.ru). Нам нужно исправить эту ситуацию, а именно сделать так, чтобы переменная REMOTE_ADDR выдавала реальный адрес клиента.
Задача эта решается на ура установкой модуля Apache под названием mod_realip2, двойка в названии модуля означает то, что модуль предназначен для Apache 2.
Итак, для установки этого модуля в Ubuntu Server нам понадобится предварительно установить дополнительные пакеты:
$ sudo apt-get install rpm apache2-prefork-dev
Переходим непосредственно к установке:
$ mkdir ~/mod_realip2 $ cd ~/mod_realip2 $ wget -O mod_realip2.src.rpm http://www.lexa.ru/nginx-ru/binSB_6zvSegR.bin $ rpm2cpio mod_realip2.src.rpm | cpio -idmuv --no-absolute-filenames $ apxs2 -c mod_realip2.c
При этом должен появиться каталог .libs, среди прочих там будет лежать скомпилированный файл mod_realip2.so, его нам и нужно установить:
$ sudo cp .libs/mod_realip2.so /usr/lib/apache2/modules/
Включаем модуль в настройках Apache:
LoadModule realip2_module /usr/lib/apache2/modules/mod_realip2.so RealIP On RealIPProxy 127.0.0.1 83.246.222.22 RealIPHeader X-Real-IP
Настройки nginx:
location / { proxy_pass http://127.0.0.1:81; proxy_set_header X-Real-IP $remote_addr; }
Значение X-Real-IP в этих настройках указывает, что реальный IP-адрес пользователя будет передаваться в заголовке под названием “X-Real-IP”. Параметр RealIPProxy в настройках Apache содержит список IP-адресов, для которых нужно применять этот модуль.
Спасибо! Сразу всё заработало.
P.S. Apache настроил как теперь принято – .load и .conf.
It’s a shame you don’t have a donate button! I’d definitely
donate to this superb blog! I guess for now i’ll settle for book-marking and adding your RSS feed to my
Google account. I look forward to new updates and will talk about this site
with my Facebook group. Talk soon!
I am regular reader, how are you everybody?
This article posted at this website is in fact pleasant.