我有以下VCL:
vcl 4.0;
import std;
import directors;
backend one {
.host = "localhost";
.port = "3333";
}
backend two {
.host = "localhost";
.port = "3333";
}
sub vcl_init {
new random_director = directors.random();
random_director.add_backend(two, 10);
random_director.add_backend(one, 8);
}
sub vcl_recv {
std.log("start vcl_recv");
set req.backend_hint = random_director.backend();
if (req.backend_hint == one) {
std.log("one");
} else if (req.backend_hint == two) {
std.log("two");
} else {
std.log("neither one");
}
std.log("end vcl_recv");
}
当我运行它时,输出始终是:
start vl_recv
neither one
end vcl_recv
如何正确检查以查看选择了哪个后端?
谢谢
最佳答案
在vcl_backend_fetch
中,您应该可以访问bereq.backend.name
因此,移动代码,您可能会遇到类似以下内容的情况:
sub vcl_backend_fetch {
if (bereq.backend.name == "one") {
std.log("one");
} else if (bereq.backend.name == "two") {
std.log("two");
} else {
std.log("neither one");
}
}
关于 Varnish VCL : how can I switch on req. backend_hint?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43357690/