清漆4记录代理/负载均衡器而不是客户端IP地址

时间:2017-03-02 21:41:06

标签: config varnish

所以我试图在nginx前面和AWS负载均衡器后面的Varnish 4的新安装(我们已经使用3到达此点)下记录客户端IP地址,并且可以&# 39;似乎让客户端的IP地址记录在清漆下。

之前在3中,我们在sub_recv()的顶部使用了它:

std.collect(req.http.x-forwarded-for);
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;
}

以及另一台服务器:

std.collect(req.http.x-forwarded-for);
if (req.http.x-forwarded-for) {
        std.log("ip:" + req.http.x-forwarded-for);
} else {
        std.log("ip:" + client.ip);
}

然而,这些都没有在Varnish 4中工作,而且第一个代码块基本上是从我所阅读的这一点开始编码成清漆的。 我也试过这个无用:

remove req.http.X-Forwarded-For;
set    req.http.X-Forwarded-For = client.ip;

这最后一项仍然是vcl中的内容。我已将整个vcl放在pastbin(http://pastebin.com/Q1nCprxL)上,删除了一些不相关的部分。 x-forwarded-for就在那里,varnish只是记录最右边的IP地址而不是最左边的ip地址。

X-Forwarded-For: 209.53.112.36, 172.25.10.228

1 个答案:

答案 0 :(得分:-1)

所以这些方法很可能都有效。然而,你实际使用的是哪一个取决于你。事实证明,我的问题的答案不是由于3和4之间的任何差异,而是lack of a return(hash) at the end of vcl_recv()(并且除了X-Forwarded-For中的最后一个IP之外,它可能会删除所有错误)。