清漆X-Forward-IP

我目前有一个configuration设置如下:

负载均衡器清除caching(x2服务器)到Web节点(x3服务器)(Apache,PHP)

我现在已经在varnish中设置了req.http.X-Forwarded-For = client.ip ,它应该把IP地址传递给Apache节点。 Apache节点也运行mod_rpaf,这将有助于服务器使用X-Forward-IP而不是VarnishcachingIP。

这部分对我来说很好,但我遇到了另一个问题。 目前,只有负载均衡器正在接收请求,并为页面请求清caching。 这意味着Apache只loggingLoad Balancer的IP地址。 但是,负载均衡器也会将请求中的X-Forwarded-For标头发送给Varnish。 我如何将这个头文件传递给Apache服务器?

如果您只是对“真实”的客户端IP感兴趣,那么req.http.X-Forwarded-For = client.ip设置成完全的清漆。

然后,清漆就不会与标题交互 – 它应该将负载平衡器设置的标题传递给Apache,从而允许Apache查看并logging“真实”的客户端IP。

运行nginx -V并确保你有--with-http_realip_module

如果是这样,请将以下内容添加到/etc/nginx/nginx.conf HTTP头部分

 set_real_ip_from 127.0.0.1; real_ip_header X-Forwarded-For; 

一旦完成service nginx restart (或者/etc/init.d/nginx restart

这是testing清漆3.0.4和100%的工作。

 ******:varnishd -V varnishd (varnish-3.0.4 revision 9f83e8f) 

所选的答案是不完全正确的(至less对于Varnish 3,AWS上的apache,你需要在上面放置清漆设置:

 sub vcl_recv { set req.backend = dsbalancer; if (req.restarts == 0) { if (req.http.x-forwarded-for) { set req.http.X-Forwarded-For = req.http.X-Forwarded-For; } else { set req.http.X-Forwarded-For = client.ip; } } 

然后在你的httpd.conf LogFormat中添加一个指令来logging它。