Заметки об 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: Apache, Nginx
Category:
Apache, Nginx |
1 Comment »
22 September 2015 - 16:47
[…] […]