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