通过反向代理进行记录?

通过反向代理进行记录?

我目前在我们的开发网站前面运行 Varnish 作为反向代理,在部署到生产环境之前进行测试。我必须掌握的事情之一是日志记录:在直接访问的世界中,Apache 将客户端 IP 地址记录到和access_logerror_log当每个客户端连接都来自我们的 Varnish 框时,这不太有用。

SetEnvIf我对和进行了一些自定义LogFormat,现在我们的系统可以根据传入连接的来源智能地记录来自或 的access_log相应 IP 。但这对 没有任何作用。据我所知,我无法覆盖此日志中的客户端 IP。REMOTE_HOSTX-Forwarded-Forerror_log

那么,您在反向代理世界中的日志记录解决方案是什么?我是否应该完全放弃标准 Apache 日志记录并将精力集中在其他地方,即代码中?我对这里的使用情况统计和安全审计都感兴趣。

答案1

提示:

mod_rpaf-rpaf 是“反向代理添加转发”的缩写。

当满足两个条件时,它会更改其他 Apache 模块可见的客户端远程地址。第一个条件是远程客户端实际上是 httpd.conf 中定义的代理。其次,如果有传入的 X-Forwarded-For 标头,并且代理在其已知代理列表中,它会从传入的 X-Forwarded-For 标头中获取最后一个 IP,并在请求结构中更改客户端的远程地址。

http://stderr.net/apache/rpaf/

答案2

我将所有内容都记录在 Varnish 中(varnishlog记录到文件中,几天内每小时轮换一次)。这样我就能准确地将 Varnish 中发生的事情与幕后发生的事情联系起来。

正如您所说,您的使用统计数据大部分都包含在 的明智日志中X-Forwarded-For,尽管您也可以使用varnishncsa进行更完整的访问日志记录(这样您就可以了解网站上的每一次点击)。“安全审计”太过宽泛,无法提出具体的建议。

答案3

error_log是 Varnish 和 Apache 之间的错误报告,客户端和 Varnish 之间发生的任何错误都将记录在 Varnish 端,而不是 Apache 端。您的error_log应该是空的,因为您可以控制两个端点。任何出现在该日志中的事情都应该被视为严重的事情。

相关内容