0

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

我有这个用例:

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

问题是,如果结果为负,Varnish 能否以某种方式查询某个 URL 的后端,然后根据提到的标志强制返回(通过)该后端?

提前致谢。

4

1 回答 1

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);
  }
  #...
}
# ...

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

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

于 2013-12-27T15:29:44.830 回答