【问题标题】:Varnish VCL "Symbol not found: std.querysort"Varnish VCL“找不到符号:std.querysort”
【发布时间】:2016-06-30 22:49:24
【问题描述】:

我正在从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

我应该包含一个模组还是以某种方式定义std

【问题讨论】:

    标签: varnish-vcl varnish-4


    【解决方案1】:

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

    vcl 4.0;
    import std;
    
    sub vcl_init {
        # ...
    
        # Normalize query arguments
        set req.url = std.querysort(req.url);
    }
    

    【讨论】:

    • 谢谢!就个人而言,我会将修改 URL 放在 vcl_recv 而不是 vcl_init 中。通常 vcl_init 仅用于初始化模组。
    猜你喜欢
    • 2014-08-31
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 2012-09-05
    • 2015-04-26
    • 2017-09-07
    • 2012-09-16
    相关资源
    最近更新 更多