【发布时间】:2012-08-28 05:33:28
【问题描述】:
我有一个在 Cloudflare 后面运行的网站,它是一个反向代理。这意味着我在访问日志中只能获得一两个 IP 地址。
但是,Cloudflare 确实在请求标头中提供了访问者 IP 地址,我假设我可以在访问日志中记录而不是标准地址。
我知道如何使用CustomLog,但是有没有办法在 Apache 访问日志中保存 HTTP 标头?
谢谢。
【问题讨论】:
标签: apache logging http-headers
我有一个在 Cloudflare 后面运行的网站,它是一个反向代理。这意味着我在访问日志中只能获得一两个 IP 地址。
但是,Cloudflare 确实在请求标头中提供了访问者 IP 地址,我假设我可以在访问日志中记录而不是标准地址。
我知道如何使用CustomLog,但是有没有办法在 Apache 访问日志中保存 HTTP 标头?
谢谢。
【问题讨论】:
标签: apache logging http-headers
是的 - 看看文档 - 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 指令附近的注释——它会选择最新定义的版本。
Dw.
【讨论】: