【问题标题】:Varnish purge configuration causing startup errors清漆清除配置导致启动错误
【发布时间】:2011-08-10 08:46:49
【问题描述】:

我在 Varnish 中的清除配置有问题。我有一个如下配置的清除 URL,但在尝试启动服务时,我得到一个错误,如下所示。如果我注释掉这段配置,服务将毫无问题地启动。有人知道我哪里出错了吗?

干杯。

sub vcl_recv {
  #purge all
  if (req.request == "PURGE") {
    if (!client.ip ~ purge) {
      error 405 "Not allowed.";
    }
    if (req.url ~ "varnish/index/purgeall/key/#Fj1nzljh") {
      purge_hash( ".*" );
    }
  }

启动时的错误信息如下:

user@ubuntu:/var/www$ sudo service varnish start
 * Starting HTTP accelerator varnishd                                    [fail] 
storage_file: filename: /var/lib/varnish/ubuntu/varnish_storage.bin size 1024 MB.
Message from VCC-compiler:
Expected an action, 'if', '{' or '}'
(input Line 18 Pos 7)
      purge_hash( ".*" );
------##########---------
Running VCC-compiler failed, exit 1
VCL compilation failed
mark@ubuntu:/var/www$ sudo service varnish start
 * Starting HTTP accelerator varnishd                                                                                                                                                     [fail] 
storage_file: filename: /var/lib/varnish/ubuntu/varnish_storage.bin size 1024 MB.
Message from VCC-compiler:
Expected an action, 'if', '{' or '}'
(input Line 18 Pos 7)
      purge_hash( ".*" );

【问题讨论】:

    标签: caching varnish purge


    【解决方案1】:

    在 3.0.x 中正确的做法是这样的:

    acl our_lan {
        "localhost";
        "10.0.0.0"/8;
        "192.168.0.0"/16;
    }
    
    sub vcl_recv {
        # ...
        if (req.request == "PURGE") {
            if (! (client.ip ~ our_lan)) {
                error 405 "Not allowed.";
            }
            return (lookup);
        }
        # ...
    }
    
    sub vcl_hit {
        if (req.request == "PURGE") {
            purge;
            error 200 "Purged.";
        }
    }
    
    sub vcl_miss {
        if (req.request == "PURGE") {
            error 200 "OK: but URL not in cache.";
        }
    }
    

    YMMV.

    【讨论】:

      【解决方案2】:

      purge_hash 似乎已在最新版本的 varnish http://www.varnish-cache.org/trac/changeset/e20226fa977bb3e05d49b4e497a0b9f64ca5f272 中被删除

      好像要清除整个缓存,可以通过其他清除功能来实现

      【讨论】:

      猜你喜欢
      • 2015-03-18
      • 1970-01-01
      • 2012-09-21
      • 1970-01-01
      • 2016-12-25
      • 2014-04-07
      • 1970-01-01
      • 2016-05-06
      • 2019-08-26
      相关资源
      最近更新 更多