【发布时间】:2020-07-14 07:01:00
【问题描述】:
我正在尝试嵌套 Varnish 导演,但它在 4.1.10 或 6.4 中不起作用,尽管在多个地方都提到过。
我有两个随机导演,我想像这样将它们添加到备用导演:
vcl 4.0;
import directors;
backend alpha { .host = "192.168.0.101"; }
backend bravo { .host = "192.168.0.102"; }
sub vcl_init {
new primary_director = directors.random();
primary_director.add_backend(alpha, 1.0);
new secondary_director = directors.random();
secondary_director.add_backend(bravo, 1.0);
new fallback_director = directors.fallback();
fallback_director.add_backend(primary_director);
fallback_director.add_backend(secondary_director);
}
official documentation 支持这种情况:
注意,directors 可以使用其他 director 作为后端
知道我在这里做错了什么吗?
您可以通过将上面的 sn-p 保存为 /tmp/test.vcl 并在 Docker 中运行 varnish 来自己测试:
$ docker run -v /tmp/test.vcl:/test.vcl --rm varnish:6.4 varnishd -F -f /test.vcl
Error:
Message from VCC-compiler:
Expression has type INSTANCE, expected BACKEND
('/test.vcl' Line 15 Pos 35) -- (Pos 50)
fallback_director.add_backend(primary_director);
----------------------------------################--
Expected argument: BACKEND (unnamed argument)
While compiling function call:
('/test.vcl' Line 15 Pos 5) -- (Pos 50)
fallback_director.add_backend(primary_director);
----##############################################--
Running VCC-compiler failed, exited with 2
VCL compilation failed
【问题讨论】:
标签: varnish varnish-vcl