У меня есть веб-сайт, работающий за Cloudflare, который является обратным прокси. Это означает, что я всегда получаю только один или два IP-адреса в своих журналах доступа.
Тем не менее, Cloudflare предоставляет IP-адрес посетителя в заголовках запросов, которые, как я предполагаю, я могу зарегистрировать вместо стандартного в журнале доступа.
Я знаю, как использовать CustomLog, но есть ли способ сохранить заголовок HTTP в журнале доступа Apache?
Спасибо.
Ответ 1 · рейтинг 19 · Dirk-Willem van Gulik
Да, взгляните на документы - 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.