大型文件出现 Varnish 502 错误

大型文件出现 Varnish 502 错误

每当我用 Varnish 处理大型文件时,是否有某种方法可以让 Varnish 只传输大于特定大小的文件?Varnish 在处理大型文件(例如,845472505 字节(6.3G))时会给出一些 502 错误,我认为这是因为我的 malloc 缓存只有 256m。

当前配置:

DAEMON_OPTS="-a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -p send_timeout=604800 -p http_resp_hdr_len=8192 -s malloc,256m"

请注意,我不能仅仅“删除”文件 - 我只是不想缓存超过一定大小的文件。

编辑:因为我必须等到 8 小时过去后才能回答我自己的问题......

因此,似乎我的后端超时设置得不够高,无法传输文件。我增加了它,它似乎不再给我大文件发送 502 错误。我还转换为使用文件缓存(这是在 SSD VPS 上),以便我可以存储整个文件。

答案1

如果你希望阻止 Varnish 缓存某个文件,你可以no-cache从后端服务器发送一个标头。例如:

Cache-Control: private, no-cache, no-store, max-age=0

或者,你可以检查Content-LengthVCL 中的标题并据此采取行动

sub vcl_fetch {

  if (beresp.http.Content-Length !~ "[0-9]{10,12}") {
    return(deliver);
  }
}

相关内容