gpt4 book ai didi

Varnish :如果我在hash_data中有cookie,则清除

转载 作者:行者123 更新时间:2023-12-03 17:46:18 27 4
gpt4 key购买 nike

问题:

我无法清除我的页面。经过很多时间,我决定找出清除的工作原理并找到它!

As you can see we have used a new action - return(purge). This ends execution of vcl_recv and jumps to vcl_hash. This is just like we handle a regular request. When vcl_hash calls return(lookup) varnish will purge the object and then call vcl_purge. Here you have the option of adding any particular actions you want Varnish to take once it has purge the object. docs



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

问题:

如何通过URI清除我的所有页面?我认为禁令制度无济于事。也许你建议我一些事情?

最佳答案

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 所需要做的就是向 Varnish 发送一个带有 Purge 方法的请求,如下所示:
$ 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 中检索到的。

我希望这个答案可以帮助您了解禁令和清除的工作原理,以及您可以确定它们如何为您提供帮助。

如果有任何遗漏或不能满足您的需求,请编辑您的问题以更清楚地表达您的疑问(标题和问题之间存在分歧,可能会导致混淆),我很乐意编辑答案。

关于 Varnish :如果我在hash_data中有cookie,则清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41065044/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com