Я регистрирую x-forwarded-for с помощью средства форматирования %{X-FORWARDED-FOR}i . Однако бывают случаи, когда заголовок X-Forwarded-For получает CSV'd (в зависимости от настроек клиента):

X-Forwarded-For: 66.66.66.66, 123.123.123.123

Который отображается в файле журнала как вышеупомянутые IP-адреса CSV.

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

1 ответ1

1

Да. Вы можете сделать это с помощью регулярного выражения, чтобы извлечь самый левый IP:

SetEnvIf X-Forwarded-For "^(\d{1,3}+\.\d{1,3}+\.\d{1,3}+\.\d{1,3}+).*" XFFCLIENTIP=$1

Обратите внимание на использование $ 1, чтобы установить переменную среды XFFCLIENTIP для хранения содержимого первой группы в регулярном выражении (в скобках). Затем вы можете определить формат журнала, который использует переменную: этот пример мы используем внутренне на сайте nearmap.com , поэтому он регистрирует дополнительную информацию, но бит, который вам нужен, это % {XFFCLIENTIP} e в начале. Обратите внимание на env = XFFCLIENTIP в конце строки, что означает, что этот формат используется, только если установлена переменная окружения.

CustomLog /var/log/apache2/access.log "%{XFFCLIENTIP}e \"%{session}C\" \"%{nearmapuid}C\" %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" env=XFFCLIENTIP

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .