在Apache2访问日志中记录HTTP标头

时间:2012-09-03 13:09:30

标签: apache logging http-headers

我有一个在Cloudflare后面运行的网站,它是一个反向代理。这意味着我只能在访问日志中获得一个或两个IP地址。

但是,Cloudflare确实在请求标头中提供了访问者IP地址,我假设我可以在访问日志中记录而不是标准的。

我知道如何使用CustomLog,但有没有办法在Apache访问日志中保存HTTP标头?

感谢。

1 个答案:

答案 0 :(得分:17)

是的 - 看一下文档 - http://httpd.apache.org/docs/2.2/mod/mod_log_config.html,特别是

的条目
%{Foobar}i  

哪会让你知道:

  

Foobar的内容:请求中的标题行发送给   服务器。其他模块(例如mod_headers)所做的更改会影响这一点。   如果您对大多数情况下请求标头的内容感兴趣   模块会修改它,使用mod_setenvif复制标头   进入内部环境变量并使用。记录该值   %{VARNAME} e如上所述。

因此,人们通常会在CustomLog条目中添加一些像“...%{X-Forwarded-For-IP} i”这样的条目。

将'X-Forwarded-For-IP'替换为您的cloudflare服务获取您(通常类似于''“CF-Connecting-IP”''); e.g。

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

关于'transferlog' - 请参阅TransferLog Directive附近的注释 - 它会获取最新定义的版本。

DW传递。