从后端强制清除Varnish

时间:2013-12-26 11:14:34

标签: backend varnish disable-caching

是否可以根据后端设置的某些条件禁用Varnish?

我有这个用例:

由Varnish提供支持的网站,有管理区域,管理员可以关闭页面缓存(Varnish)。这将最终在某些存储中设置适当的标志,具体取决于实现本身等。

问题是,Varnish可以某种方式在某个URL查询后端,然后根据提到的标志,如果结果是否定的话,强制返回(传递)吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以使用Varnish探针[1]和req.backend.healthy来执行此类行为,例如:

probe caching {
  .url = "/caching_on.txt";
  .interval = 1s;
  .timeout = 1s;
}
backend default {
  .host = "127.0.0.1";
  .port = "8080";
  .probe = basic;
}
backend alternative {
  .host = "127.0.0.1";
  .port = "8080";
}
sub vcl_recv {
  if (! req.backend.healthy) {
    set req.backend = alternative;
    return (pass);
  }
  #...
}
# ...

如果/caching_on.txt的HTTP响应不是200,则使用该段代码,varnish将后端切换为alternative并传递请求。

[1] https://www.varnish-cache.org/docs/3.0/reference/vcl.html#backend-probes