2

我有以下 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 路径,如果它们被分配给支持的路径,另一种方式,如果它们被分配给后端 2。

我的问题是在线路之后

set req.backend_hint = random_director.backend();

我无法弄清楚用户被分配到哪个后端。换句话说,我不知道如何检查 req.backend_hint。

我试着用

标准日志(req.backend_hint.host);

但这会引发编译错误(不是 STRING_LIST)。

我上面的例子改编自这里:http ://book.varnish-software.com/4.0/chapters/Saving_a_Request.html

所以,我的问题是:如何检查 req.backend_hint?

4

0 回答 0