我在Apache2.4前面的Ubuntu上安装了Varnish 6作为后端。
我尝试在子vcl_pipe
,vcl_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?)。
任何帮助将不胜感激。感谢。
答案 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”,则清漆会尊重这一点并将关闭连接。