我在我的 Apache Web 服务器上安装了默认设置的 Varnish。 Apache 列表到端口 8080,Varnish 列表到 80。
我在网站上几乎没有大小为 100MB、500MB 和 1GB 的可下载文件
1GB 不工作,当你点击它时它会说不可用页面或连接被服务器关闭。其他两个工作正常,但我不确定这是否是下载它们的正确方法。
我如何让 Varnish 绕过这些文件并直接从 Web 服务器获取它们?
谢谢。
最佳答案
这可以通过检查后端答案中的 Content-Length
来完成,如果它大于某个大小,则用一些标记标记它并重新启动
请求交易
例如,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);
}
..
}
关于apache - Varnish绕过大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23065255/