是否可以根据后端设置的某些条件禁用Varnish?
我有这个用例:
由Varnish提供支持的网站,有管理区域,管理员可以关闭页面缓存(Varnish)。这将最终在某些存储中设置适当的标志,具体取决于实现本身等。
问题是,Varnish可以某种方式在某个URL查询后端,然后根据提到的标志,如果结果是否定的话,强制返回(传递)吗?
提前致谢。
答案 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