Apache 2.4.7 + mod_rpaf (mod_remoteip) + nginx

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

Я столкнулся с проблемой вывода реальных IP адресов apache 2.4.7 + nginx, ни один из модулей, которые успешно справлялись с этой проблемой, не работали на apache 2.4.7, либо отказывались компилироваться… Решение было найдено, теперь для отображения реальных IP шников нам потребуется 2 модуля, а именно mod_rpaf 2.0.c и mod_realip2.
Я выкладываю уже исправленный вариант mod_rpaf 2.0.c и mod_realip2 для apache 2.4.7, его необходимо скомпилировать и подключить в настройках httpd.conf
Скачать mod_rpaf + mod_realip2 for apache 2.4.7
После скачивания выполняем компиляцию:

apxs -cia mod_rpaf-2.0.c

Дальше самое интересное, для корректной работы нам потребуется 2 модуля. Этот модуль отвечает за правку IP в логах и сервер-статусе.

LoadModule rpaf_module        /usr/lib/apache/mod_rpaf-2.0.so
RPAFenable On
RPAFproxy_ips #тут через пробел IPшники сервера
RPAFheader X-Forwarded-For

#после вам надо установить модуль RemoteIP, возможно что он уже установлен, проверить можно командой

httpd -l | grep mod_remoteip.c

если нету, то компилируем модуль, после устанавливаем

apxs -cia mod_realip2.c

После включаем отображение реальных IP на сайте в переменной REMOTE_ADDR

LoadModule remoteip_module /usr/lib/apache/mod_remoteip.so
RemoteIPHeader X-Real-IP 

А вот так, должен выглядеть конфиг nginx.conf чтобы IPшники корректно передавались:

    proxy_set_header    Host    $host;
    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

Принцип работы прост, один модуль заменяет IP в логах и сервер статусе, второй модуль заменяет Ip в переменной $_SERVER['REMOTE_ADDR']
Жмём на кнопку мне нравится и радуемся новому программному обеспечению.
© bartik.

2 комментария »

  1. Подскажите, а на какой ОС вы пробовали искать готовые пакеты ?
    Сам почти пол дня капался с apache 2.4.7 на ubuntu 14.04. Нашел интересную (или странную) штуку:
    1. модуль mod_remoteip (идет в комплекте с апачем 2.4) меняет remote_addr на бэкэнде как надо:
    # a2enmod remoteip
    в файл /etc/apache2/mods-enabled/remoteip.conf добавляю:
    RemoteIPHeader X-Real-IP
    RemoteIPInternalProxy 127.0.0.1

    Минус этого модуля - в логах пишет 127.0.0.1

    2. Модуль rpaf (2.0 который), успешно меняет ip в логах апача, но сам remote_addr остается прежним (со стороны тех же php скриптов)

    Зато в связке все работает как надо.
    p.s.: раньше на apache 2.2 хватало одного mod_rpaf

    Комментарий от greenlogles — 17 июня 2014 @ 18:34

  2. Пробывал искать на CENTOS 6.5

    Комментарий от admin — 29 июня 2014 @ 11:26

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

Войти с помощью: 
Вы должны войти чтобы оставить комментарий.