Зарегистрировать HTTP-заголовок в журналах доступа Apache2

У меня есть веб-сайт, работающий позади Cloudflare, который является обратным прокси. Это означает, что я только когда-либо получаю один или два IP-адреса в журналах доступа.

Однако Cloudflare действительно предоставляет IP-адрес посетителя в заголовках запроса, который, как я полагаю, я могу записать вместо стандартного в журнале доступа.

Я знаю, как использовать CustomLog, но есть ли способ сохранить заголовок HTTP в журнале доступа Apache?

Спасибо.

Ответ 1

Aye - посмотрите на документы - http://httpd.apache.org/docs/2.2/mod/mod_log_config.html, в частности, запись для

%{Foobar}i  

Что вы будете чистить:

Содержимое строки Foobar: заголовка в запросе, отправленном на сервер. Изменения, внесенные другими модулями (например, mod_headers), влияют на это. Если вас интересует, что заголовок запроса был до того, когда большинство модули изменили бы его, используйте mod_setenvif для копирования заголовка во внутреннюю переменную среды и регистрировать это значение с помощью % {VARNAME} e, описанного выше.

Таким образом, обычно можно добавить некоторую запись типа "...% {X-Forwarded-For-IP} я в запись CustomLog.

Замените "X-Forwarded-For-IP" на то, что получает ваша служба cloudflare (что обычно является "CF-Connection-IP" ''); например.

 LogFormat "%v %{CF-Connecting-IP}i (via cloudflare:%h) %l %u %t \"%r\" %>s %b" cloudflare
 CustomLog "|rotatelog.. etc" cloudflare

Что касается "transferlog" - см. примечание рядом с директивой TransferLog - что он выбирает самую последнюю определенную версию.

Dw.