【问题标题】:Varnish: purge if I have cookie in hash_data清漆:如果我在 hash_data 中有 cookie,则清除
【发布时间】:2017-04-25 04:55:32
【问题描述】:

问题

我无法清除我的页面。很多次之后,我决定找出清除的工作原理并找到!

如您所见,我们使用了一个新动作——return(purge)。这将结束 vcl_recv 的执行并跳转到 vcl_hash。这就像我们处理常规请求一样。当 vcl_hash 调用 return(lookup) 时,varnish 将清除对象,然后调用 vcl_purge。在这里,您可以选择添加任何您希望 Varnish 在清除对象后采取的特定操作。 docs

然后我了解到我在 hash_data 中有 cookie,我无法清除特定的 url。

问题

如何通过 URI 清除我的所有页面?我觉得禁令系统帮不了我。也许你给我一些建议?

【问题讨论】:

  • 没有人能帮助我或问这么愚蠢的问题吗?..

标签: varnish varnish-4


【解决方案1】:

Purge 方法仅适用于所请求的特定 url。不能对 Purge 使用正则表达式。 例如:请求 www.example.com/uri 并调用 Purge,只有整个 URL 的对象将从缓存中删除。然后,如果您想使用 Purge,您必须在您的 VCL 上实现以下功能:

acl purge {
    "localhost";
    "192.168.55.0"/24;
}
sub vcl_recv {
        ...
        # allow PURGE from localhost and 192.168.55...

        if (req.method == "PURGE") {
                if (!client.ip ~ purge) {
                        return(synth(405,"Not allowed."));
                }
                return (purge);
        }
        ...
}

之后,清除 URL 所需要做的就是使用 Purge 方法向 Varnish 发送请求,如下所示:

$ curl -X PURGE "www.example.com/desired/uri"

当您想通过一个请求删除多个对象时,可以使用 Ban。这可以使用 Purge 中不可用的正则表达式来完成。为了使用它,你应该有一个类似于下面的代码,维护之前的 acl:

sub vcl_recv {
        ...
        if (req.method == "BAN") {
                # Same ACL check as above:
                if (!client.ip ~ purge) {
                        return(synth(403, "Not allowed."));
                }
                ban("req.http.host == " + req.http.host +
                      " && req.url ~ " + req.url);

                # Throw a synthetic page so the
                # request won't go to the backend.
                return(synth(200, "Ban added"));
        }
        ...
}

禁止对象类似于清除,但现在您可以发送正则表达式。下面的例子展示了如何禁止来自主机 www.example.com 的所有 png 文件:

$ curl -X BAN "www.example.com/.png$"

所有信息均来自Varnish docs

我希望这个答案可以帮助您了解禁令和清除是如何工作的,并且您可以确定它们可以如何帮助您。

如果有任何遗漏或无法满足您的需求,请编辑您的问题,让您的疑问更加清晰(标题和问题之间存在分歧,可能会导致混淆),我很乐意编辑回答。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-04
    • 2014-03-14
    • 2012-08-07
    • 2014-01-08
    • 2012-03-02
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    相关资源
    最近更新 更多