Вы ищете заголовок X-Forwarded-For
. Любой достойный прокси добавит этот заголовок в HTTP-запросы, которые он пересылает.
Если весь ваш сайт находится за этим прокси-сервером, вам необходимо найти для него соответствующий LogFormat
, который обычно будет выглядеть следующим образом:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
, и добавить к нему заголовок (или поменять местами % h
, который будет только вашим обратным прокси-сервером), например:
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
Если вы не хотите переопределять объединенный формат журнала
, создайте свой собственный:
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined_proxy
CustomLog /path/to/logfile.log combined_proxy
]% {
- это способ добавить любой другой заголовок запроса в ваши файлы журнала.
Примечание: Этот заголовок не всегда будет одним IP-адресом. Если запрос прошел более чем через один прокси, вы получите список в форме, разделенный запятыми: клиент, прокси1, прокси2
; вам может потребоваться обновить скрипты или парсеры журналов, чтобы учесть это.
Да, есть.
Для текущей версии Apache: mod_rpaf
Для чего-либо более позднего, чем ветка 2.3: mod_remoteip
Оба эти заменит переменную REMOTE_ADDR
в запущенном процессе Apache на последний IP-адрес из входящего заголовка X-Forwarded-For
от любого доверенного обратного прокси-сервера. Этот IP-адрес также будет регистрироваться в ваших стандартных журналах Apache без необходимости их изменения вообще.
Эта переменная также будет доступна вашему PHP-коду как $ _ SERVER ['REMOTE_ADDR']
, где обычно вы ожидаете, что это будет удаленный IP-адрес.
Единственная конфигурация, которая требуется для этих модулей, - это предоставить им список доверенных обратных прокси.
В примечании по безопасности эти заголовки могут быть добавлены, удалены , подделка и, возможно, искалеченная. Нет никакой гарантии, что любой IP-адрес, который вы получите из этого заголовка, будет истинным IP-адресом посетителя. Последний в списке (который добавлен вашим доверенным обратным прокси-сервером) - единственный, в котором вы можете быть уверены.