mod_realip2: правильные IP-адреса в Apache2


Допустим, у вас двухуровневая конфигурация веб-сервера – фронтенд 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-адресов, для которых нужно применять этот модуль.

Похожие статьи

One thought on “mod_realip2: правильные IP-адреса в Apache2”

  1. Спасибо! Сразу всё заработало.
    P.S. Apache настроил как теперь принято – .load и .conf.

Leave a Reply

Your email address will not be published. Required fields are marked *