清漆客户端IP未登录Apache日志

时间:2012-04-05 08:08:48

标签: varnish varnish-vcl

我已经使用Apache配置了Varnish 3,它运行得非常好。但是我无法在Apache日志中记录客户端IP。我试了几个解决方案,没有运气。现在我的Apache访问日志文件正在记录服务器IP而不是客户端IP地址。

以下是我的配置供您考虑:

Varnish VCL:(/ etc / varnish / default.vlc):http://pastebin.com/PuBqZ6fx

Apache Config

/etc/httpd/conf/httpd.conf中

LogFormat“%{X-Forwarded-For} i%l%u%t \”%r \“%> s%b \”%{Referer} i \“\”%{User-Agent} i \“”varnishcombined

Apache虚拟主机

    ...... 其他的东西 .....     ErrorLog日志/ fr-error-log     CustomLog日志/ fr-custom-log varnishcombined     ...... 其他的东西 .....

注意:安装的清漆版本为varnish-3.0.2-1.el5.x86_64

感谢。 Raheel

2 个答案:

答案 0 :(得分:12)

我认为你的pastebin示例中有一个工作配置,这应该可以解决这个问题:

if (req.restarts == 0) {
  if (req.http.X-Forwarded-For) {
    set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
  } else {
    set req.http.X-Forwarded-For = client.ip;
  }
}

在你的vcl_recv {}。

答案 1 :(得分:10)

正如评论中提到的OP,解决方案是Apache模块。 Varnish默认添加X-Forwarded-For标题。

然后像mod_rpaf(Apache 2.2)或mod_remoteip(Apache 2.4)这样的apache模块会将remote_ip值设置为X-Forwarded-For标头传入​​的值。

这提供了一个更强大的解决方案,而不仅仅是将X-Forwarded-For标头的值记录到您的apache日志中。例如,它允许您通过Varnish或直接访问2个IP上的同一站点,并且站点按照您的预期运行并正确记录。