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

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

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

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

Спасибо.


person Alfo    schedule 03.09.2012    source источник


Ответы (1)


Да, взгляните на документы - 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}i, в запись CustomLog.

Замените «X-Forwarded-For-IP» на то, что вам предоставляет служба cloudflare (обычно это что-то вроде «CF-Connecting-IP»); например

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

Что касается «журнала передачи» — см. примечание рядом с директивой TransferLog — что он выбирает самую последнюю определенную версию.

Dw.

person Dirk-Willem van Gulik    schedule 03.09.2012