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

Alf*_*lfo 11 apache logging http-headers

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

但是,Cloudflare会在请求标头中提供访问者IP地址,我认为我可以在访问日志中记录而不是标准的访问者IP地址.

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

谢谢.

Dir*_*lik 17

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

%{Foobar}i  
Run Code Online (Sandbox Code Playgroud)

哪个会净你:

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
Run Code Online (Sandbox Code Playgroud)

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

DW.