В среде интрасети у меня есть относительно сложный сценарий, все на одном сервере:
IIS server acting as a reverse proxy listening on 443
forwards matching requests to localhost:1080/redmine
Apache reverse proxy is listening on 1080
forwards matching requests to localhost:3001 or localhost:3002 (thin servers in front of Redmine)
Thin1 and Thin2 web servers listening on 3001 and 3002 to handle requests
Проблема в том, что Apache remoteip
модуль, кажется, игнорирует X-Forwarded-For
заголовок. Конфигурация:
# in the httpd.conf file
LoadModule remoteip_module modules/mod_remoteip.so
# elsewhere, in a VirtualHost declaration
# define the header to use to retrieve the remote ip address
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1 10.101.24.161 ::1
# for debugging only
LogFormat "%a %h %{c}a *** %{x-forwarded-for}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" redmine
#LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" redmine
CustomLog "logs/access-redmine.log" redmine
С вышеуказанной отладкой LogFormat
Я ожидал, согласно документация, %a
токен, содержащий исходный IP-адрес клиента. Однако я получаю следующее:
::1 ::1 ::1 *** 10.106.33.206, 10.106.33.206:63804 - - [07/Sep/2022:16:08:24 +0200] "GET /redmine/projects HTTP/1.1" 200 10718 "https://redacted.org/redmine/my/account" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
%a
или же %{c}a
(видеть здесь) должны содержать IP-адрес клиента, но на самом деле оба содержат IP-адрес обратного прокси-сервера. ::1
. Фактический IP-адрес клиента виден в строке журнала как 10.106.33.206
через %{x-forwarded-for}i
токен, который случайно доказывает, что заголовок HTTP успешно заполняется IIS.
Я пробовал всевозможные перестановки RemoteIPTrustedProxy
, RemoteIPInternalProxy
и т. д., но ни один из них не привел к успешному заполнению %a
токен с исходным IP-адресом клиента.
(Очевидно, аналогичный вопрос не ответил на мою проблему.)
apache-2.4 обратный прокси-сервер ip x-forwarded-for