我在我的Apache Web服务器上使用默认设置安装了Varnish。 Apache上市到8080端口,Varnish上市到80.
我网站上的可下载文件很少,大小分别为100MB,500MB和1GB
1GB无法正常工作,当您点击它时,它会说服务器关闭不可用的页面或连接。其他两个工作正常,但我不确定这是否是下载它们的正确方法。
如何使varnish绕过这些文件并直接从Web服务器获取?
谢谢。
答案 0 :(得分:1)
这可以通过检查后端答案中的Content-Length
来完成,如果它大于某个大小,则使用某个标记和restart
请求交易标记
示例,Content-Length> = 10,000,00的文件应该是管道传输的:
sub vcl_fetch {
..
if ( beresp.http.Content-Length ~ "[0-9]{8,}" ) {
set req.http.x-pipe-mark = "1";
return(restart);
}
..
}
然后我们返回检查请求接收和解析。
在这里,我们可以检查我们的标记并执行pipe
sub vcl_recv {
..
if (req.http.x-pipe-mark && req.restarts > 0) {
return(pipe);
}
..
}
答案 1 :(得分:1)
在清漆4中,vcl_fetch应替换为vcl_backend_response,请参阅https://www.varnish-cache.org/docs/trunk/whats-new/upgrade-4.0.html