清漆缓存禁止与模式匹配

时间:2015-06-29 11:04:26

标签: varnish varnish-vcl

是的,我说实话,我不知道清漆vcl,我可以找出一些基本的东西,但我不太了解它,这显然是为什么我&#39 ;我有问题。

我尝试通过http请求设置缓存禁止,但请求无法通过DNS进入,而是通过清漆盒的IP地址进入,否则我无法进行确保每个清漆盒缓存都会刷新目标;这是因为我们在ELB后面有几个清漆盒,因此您无法保证禁止请求不会两次进入同一个盒子,因此通过IP进行此操作。

我使用它来确保只允许允许的IP禁止,但这不起作用:

sub vcl_hit {
    if (req.request == "BAN") {
        ban("req.url ==" + req.url);
        error 200 "Purged";
    }
}

我真的不知道该怎么做才能让这个工作起来我已经看了,但我发现的大部分教程似乎都是针对完整的URL而不仅仅是ip + pattern_to_purge

2 个答案:

答案 0 :(得分:2)

从您的配置示例中我希望您使用清漆3 您可以添加允许执行清除的ips列表,如下所示

acl ban_allowed_ip {
    "127.0.0.1";
    "127.0.0.2";
}

if(req.request ==“BAN”)中添加以下内容

if (!client.ip ~ ban_allowed_ip) {
    error 405 "Not allowed.";
}

答案 1 :(得分:0)

答案是使用:

 if (req.request == "BAN") {
    if (req.http.X-Debug != "True") {   
      error 405 "Not allowed.";
    }
    ban("obj.http.x-url ~ " + req.url);
    error 200 "ban added";
  }

虽然无论缓存中的项目是否存在,这都会返回200,但它会添加禁令。