Varnish VCL“未找到符号:std.querysort”

时间:2016-03-15 13:09:32

标签: varnish-vcl varnish-4

我正在从this handy template复制一些VCL规则并在最新的稳定Varnish4上运行。不过这部分VCL:

vcl 4.0;

sub vcl_init {
    # ...

    # Normalize query arguments
    set req.url = std.querysort(req.url);
}
                  ^

返回此错误:

-- Logs begin at Tue 2016-03-15 10:44:31 UTC, end at Tue 2016-03-15 13:02:10 UTC. --
Mar 15 13:02:10 ip-172-31-10-46 reload-vcl[18044]: Message from VCC-compiler:
Mar 15 13:02:10 ip-172-31-10-46 reload-vcl[18044]: Symbol not found: 'std.querysort' (expected type STRING_LIST):
Mar 15 13:02:10 ip-172-31-10-46 reload-vcl[18044]: ('/etc/varnish/test.vcl' Line 55 Pos 23)
Mar 15 13:02:10 ip-172-31-10-46 reload-vcl[18044]: set req.url = std.querysort(req.url);
Mar 15 13:02:10 ip-172-31-10-46 reload-vcl[18044]: ----------------------#############----------
Mar 15 13:02:10 ip-172-31-10-46 reload-vcl[18044]: Running VCC-compiler failed, exited with 2
Mar 15 13:02:10 ip-172-31-10-46 reload-vcl[18044]: VCL compilation failed

我应该包含mod还是以某种方式定义std

1 个答案:

答案 0 :(得分:4)

是的!我偶然发现another answer内的答案。在脚本顶部添加import std;可以停止错误。

vcl 4.0;
import std;

sub vcl_init {
    # ...

    # Normalize query arguments
    set req.url = std.querysort(req.url);
}