Varnish vcl_error应排除静态文件以进行维护

时间:2016-07-26 14:25:25

标签: varnish

当您需要在Varnish中使用维护站点时,默认方法是通过调用error 503通过sub vcl_error()来提供它。

这里的问题是,当您在维护站点中需要js / css / images并且它们托管在同一个URL上时,所有这些文件也会在503中结束。

有没有办法按文件扩展名排除特定文件或文件?我尝试了几种方法,例如在错误503周围放置一个if()语句,如果文件扩展名不是png,jpg,js,css,则输入它。但它会导致超时。

大部分时间我一直在阅读,将文件放在例如如果需要,Cloudflare或使用base64编码的图像和内联css / js。

这些是唯一的方法吗?

2 个答案:

答案 0 :(得分:1)

他们是对的,base64编码的图像和内联css,js等...是最安全的选择。

  • 整个响应是单原子有效载荷
  • 你不需要在这种角落案件中弄乱你的vcl
  • 无法通过抓取工具直接访问资产
  • 没有缓存传播维护资产到站点失控的风险(转发代理)

等等。

顺便说一句,你不必将html文件放在vcl中,你可以使用这个语句:

synthetic std.fileread("/etc/varnish/error.html");

您需要的只是来自设计部门的单个内联html。

答案 1 :(得分:0)

好的,我找到了一个适合我的解决方法。

在代表维护站点的HTML代码中,我使用了包括后端端口的URL。所以这些请求不会影响Varnish本身,而是Apache服务器。