我目前在我们的开发网站前面运行 Varnish 作为反向代理,在部署到生产环境之前进行测试。我必须掌握的事情之一是日志记录:在直接访问的世界中,Apache 将客户端 IP 地址记录到和access_log
。error_log
当每个客户端连接都来自我们的 Varnish 框时,这不太有用。
SetEnvIf
我对和进行了一些自定义LogFormat
,现在我们的系统可以根据传入连接的来源智能地记录来自或 的access_log
相应 IP 。但这对 没有任何作用。据我所知,我无法覆盖此日志中的客户端 IP。REMOTE_HOST
X-Forwarded-For
error_log
那么,您在反向代理世界中的日志记录解决方案是什么?我是否应该完全放弃标准 Apache 日志记录并将精力集中在其他地方,即代码中?我对这里的使用情况统计和安全审计都感兴趣。
答案1
提示:
mod_rpaf-rpaf 是“反向代理添加转发”的缩写。
当满足两个条件时,它会更改其他 Apache 模块可见的客户端远程地址。第一个条件是远程客户端实际上是 httpd.conf 中定义的代理。其次,如果有传入的 X-Forwarded-For 标头,并且代理在其已知代理列表中,它会从传入的 X-Forwarded-For 标头中获取最后一个 IP,并在请求结构中更改客户端的远程地址。
答案2
我将所有内容都记录在 Varnish 中(varnishlog
记录到文件中,几天内每小时轮换一次)。这样我就能准确地将 Varnish 中发生的事情与幕后发生的事情联系起来。
正如您所说,您的使用统计数据大部分都包含在 的明智日志中X-Forwarded-For
,尽管您也可以使用varnishncsa
进行更完整的访问日志记录(这样您就可以了解网站上的每一次点击)。“安全审计”太过宽泛,无法提出具体的建议。
答案3
这error_log
是 Varnish 和 Apache 之间的错误报告,客户端和 Varnish 之间发生的任何错误都将记录在 Varnish 端,而不是 Apache 端。您的error_log
应该是空的,因为您可以控制两个端点。任何出现在该日志中的事情都应该被视为严重的事情。