在Apache2访问日志中记录HTTP头

12

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

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

我知道如何使用CustomLog,但是否有一种方法可以将HTTP头保存在Apache访问日志中?

谢谢。

1个回答

20
看这里——文档链接: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” - 请参见TransferLog指令附近的说明 - 它会捕获最近定义的版本。
Dw.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接