目前,我们正在运行Varnish作为我们的开发网站之前的反向代理,在部署到生产之前进行testing。 我不得不面对的一个问题就是日志logging:在直接访问的世界里,Apache将客户端IP地址logging到access_log和error_log 。 当每个客户端连接来自我们的Varnish盒子时,这一点稍微有用。
我已经使用SetEnvIf和LogFormat进行了一些自定义,现在我们的access_log根据传入连接的来源智能地从REMOTE_HOST或X-Forwarded-Forlogging相应的IP。 尽pipe这对于error_log没有任何作用。 据我所知,我不能覆盖这个日志中的客户端IP。
那么,您有什么解决scheme来login逆向代理世界? 我应该几乎写下标准的Apache日志logging,并把我的努力集中在其他地方,即。 在代码中? 我对这里的使用统计和安全审计感兴趣。
小费:
mod_rpaf – rpaf是反向代理添加转发的缩写。
当满足两个条件时,它将改变其他Apache模块可见的客户端的远程地址。 第一个条件是远程客户端实际上是一个在httpd.conf中定义的代理。 其次,如果有一个传入的X-Forwarded-For头,并且代理位于已知代理的列表中,它将从传入的X-Forwarded-For头获取最后一个IP,并在请求结构中更改客户端的远程地址。
我把所有的东西都loggingvarnishlog ( varnishlog到一个文件,每小时旋转几天)。 让我可以把幕后的事情与Varnish中发生的事情完全关联起来。
正如您所说,您的使用情况统计信息大部分都包含在对X-Forwarded-For的审慎logging中,尽pipe您也可以使用varnishncsa来执行更完整的访问logging(以便您知道网站上的每一次访问)。 “安全审计”过于宽泛,无法提出具体build议。
error_log报告Varnish和Apache之间的错误,客户端和Varnish之间发生的任何错误都将logging在Varnishs结束,而不是Apaches。 你的error_log应该是空的,因为你可以控制两个端点。 任何出现在日志中的东西都应该认真考虑。