12

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

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

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

谢谢。

4

1 回答 1

20

是的 - 看看文档 - 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"'');例如

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

关于“传输日志”——参见 TransferLog 指令附近的注释——它选择了最新定义的版本。

德。

于 2012-09-03T14:17:59.697 回答