我有以下VCL文件:
vcl 4.0;
import std;
import directors;
backend one {
.host = "localhost";
.port = "3333";
}
backend two {
.host = "127.0.0.1";
.port = "3334";
}
sub vcl_init {
new random_director = directors.random();
random_director.add_backend(one, 10); # 2/3 to backend one
random_director.add_backend(two, 5); # 1/3 to backend two
}
sub vcl_recv {
set req.backend_hint = random_director.backend();
std.log(req.backend_hint.host);
}
这个概念是我想在将用户随机分配到后端之后重新编写req.url。
因此,当新用户到达时,他们将被随机分配到后端。然后我将使用if语句添加一些逻辑,如果将URL路径分配给备用路径,则以一种方式重写URL路径,如果将它们分配给后端2,则将另一种方式重写。
我的问题是在行之后
set req.backend_hint = random_director.backend();
我无法确定用户被分配到哪个后端。换句话说,我不知道如何检查req.backend_hint。
我尝试使用
std.log(req.backend_hint.host);
但是会抛出编译错误(不是STRING_LIST)。
我上面的例子改编自:http://book.varnish-software.com/4.0/chapters/Saving_a_Request.html
所以,我的问题是:我如何检查req.backend_hint?