【问题标题】:varnish cache banning with pattern matching使用模式匹配禁止清漆缓存
【发布时间】:2015-06-29 11:04:25
【问题描述】:

好吧,老实说,我不知道 varnish vcl,我可以解决一些基本的东西,但我不太了解,这显然是我遇到问题的原因。

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

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

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

我真的不知道该怎么做才能让它工作,我已经看过了,但我发现的大多数教程似乎都是针对完整 URLS 而不仅仅是 ip + pattern_to_purge

【问题讨论】:

    标签: varnish varnish-vcl


    【解决方案1】:

    从您的配置示例中,我希望您使用 varnish 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.";
    }
    

    【讨论】:

      【解决方案2】:

      答案是使用:

       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,但它确实添加了禁令。

      【讨论】:

        猜你喜欢
        • 2022-11-28
        • 1970-01-01
        • 2014-08-02
        • 1970-01-01
        • 2014-07-08
        • 2012-04-03
        • 2018-09-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多