Заметки об Apache, часть 4: Пишем ip-адрес в access.log, находясь за Nginx’ом

Date September 20th, 2012 Author Vitaly Agapov

За исключением зефира в шоколаде в мире больше не существовало вещи, об которую Моржов не смог бы открыть бутылку пива.

Алексей Иванов «Блуда и МУДО»

Если Apache стоит за reverse proxy в виде солнцеподобного Nginx'а, то без осуществления дополнительных телодвижений в access.log апача будет писаться ip-адрес Nginx'а вместо ip-адреса пользователя. В большинстве случаев такие вещи никого не волнуют, но для условных mod-rewrite'ов, для ограниченного доступа или просто для порядку можно сделать так, чтобы всё было чин по чину.

Для решения задачи понадобится модуль mod_rpaf (rpaf расшифровывается как reverse proxy add forward). Он умеет переписывать адрес отправителя при наличии заголовка X-Forwarded-For в запроса и при совпадении исходного адреса со списком адресов прокси.

Для этого прикручиваем к Apache модуль mod_rpaf. Для deb-дистров это выглядит так:

 

apt-get install libapache2-mod-rpaf

Может понадобиться ещё сделать модулю a2enmod и перегрузить апач.

Вторым шагом добавляем в виртуал-хосты nginx'а внутри директивы location:

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Если Nginx стоит на том сервере, что и Apache, то на этом можно и закончить. Если нет, то список внешних прокси-серверов можно задать через пробел в директиве RPAFproxy_ips. По умолчанию в Ubuntu она прописана в файле /etc/apache2/mods-enabled/rpaf.conf.

Ещё кроме RPAFenable модуль понимает две директивы:

RPAFsethostname [On|Off] переписывает заголовок Host из X-Host.

RPAFheader позволяет задать заголовок вместо X-Forwarded-For, в котором мы получаем адрес отправителя.

На этом всё.

Заметки об Apache

Заметки об Apache, часть 1: Архивация и клиентское кэширование

Заметки об Apache, часть 2: Прячем лишнюю информацию из заголовков

Заметки об Apache, часть 3: Отключаем слабое шифрование и SSLv2

Tags: ,
Category: Apache, Nginx | 1 Comment »

Comments

Один комментарий на “Заметки об Apache, часть 4: Пишем ip-адрес в access.log, находясь за Nginx’ом”

  1. agapoff.name | IT блог » Blog Archive » Заметки об Apache, часть 5: Принудительная компрессия контента

    […] […]

Leave a comment

 Comment Form