我有一个在 Cloudflare 后面运行的网站,它是一个反向代理。这意味着我在访问日志中只能获得一两个 IP 地址。
但是,Cloudflare 确实在请求标头中提供了访问者 IP 地址,我假设我可以在访问日志中记录而不是标准地址。
我知道如何使用CustomLog
,但有没有办法在 Apache 访问日志中保存 HTTP 标头?
谢谢。
我有一个在 Cloudflare 后面运行的网站,它是一个反向代理。这意味着我在访问日志中只能获得一两个 IP 地址。
但是,Cloudflare 确实在请求标头中提供了访问者 IP 地址,我假设我可以在访问日志中记录而不是标准地址。
我知道如何使用CustomLog
,但有没有办法在 Apache 访问日志中保存 HTTP 标头?
谢谢。
是的 - 看看文档 - 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 指令附近的注释——它选择了最新定义的版本。
德。