我如何让 varnish 在 http 响应标头中返回从哪个后端获取响应?

我如何让 varnish 在 http 响应标头中返回从哪个后端获取响应?

我在后端有三台服务器,带有一个循环调度控制器。

我希望 varnish 能够用获取响应的服务器的名称或 IP 来编写 X-Server-By 标头,该怎么做?

答案1

在 Varnish 3.0.2 中我使用:

sub vcl_fetch {
    set beresp.http.X-Backend = beresp.backend.name;
}

运行完美。

答案2

sub vcl_fetch {
    set obj.http.X-Backend = req.backend;
}

在我的(非循环)设置中对 2.0.6 进行了测试。它应该能给你一些参考。

答案3

您可以在您的 Web 服务器上设置标头,例如 x-host:server2,然后 varnish 会将其作为缓存命中响应的一部分返回。

我在 Apache 上运行过这个,并且它运行完美。

答案4

以下内容尚未测试,但可以帮助您入门:

sub vcl_deliver {
    set resp.http.X-Served-By = server.hostname;
    deliver;
}

相关内容