有没有办法让Varnish从Connection:Keep-Alive切换到关闭?

时间:2018-06-15 09:27:36

标签: caching http-headers connection varnish varnish-vcl

我在Apache2.4前面的Ubuntu上安装了Varnish 6作为后端。

我尝试在子vcl_pipevcl_backend_response中设置它:

set bereq.http.Connection = "close";

我已尝试将其设置为vcl_recv

req.http.Connection = "close";

我已尝试在vcl_deliver中设置它:

set resp.http.Connection = "Close";

根本没有任何帮助。即使我使用varnishlog,我也可以看到repose连接头设置为" Close,实际上当我在浏览器中获取它时 - Connection仍然设置为" Keep-alive"。

有没有办法在Varnish中操作连接响应头? P.S事实上 - 我确实将连接响应标题更改为"关闭"在我的后端框架中,但是Varnish不会将它传递给客户端,所以我开始深入挖掘并尝试在Varnish配置中进行更改,但无论如何都不起作用。连接总是" Keep-alive"。

也许我应该尝试另一个Varnish版本(4或5?)。

任何帮助将不胜感激。感谢。

2 个答案:

答案 0 :(得分:0)

尝试

sub vcl_pipe {
set bereq.http.Connection = "close";
}

请参阅https://www.google.nl/amp/s/info.varnish-software.com/blog/using-pipe-varnish

答案 1 :(得分:0)

  

我可以看到,repose连接头设置为“关闭,实际上,当我在浏览器中获得它时-连接仍然设置为”保持活动”。

如何?如果浏览器显示“关闭”,则说明关闭。是什么让您认为这是保持活力的?

要回答您的问题:

  • 默认情况下,清漆在输入vcl_pipe之前先使连接头变大,因此连接被关闭。这是为了避免使客户端不受约束地访问后端。
  • 如果您想关闭与客户端的连接,请取消设置req.http.connection,或在vcl_recv中将其设置为“ close”,则清漆将尊重这一点并关闭连接。
  • 如果您想在后端req.http.connection处关闭连接,或在vcl_backend_fetch中将其设置为“ close”,则清漆会尊重这一点并将关闭连接。