使用HTTP和REGEX进行清漆清洗

Mat*_*aug 15 curl varnish purge

我想使用HTTP清除我的清漆元素.此http调用是从清漆本身后面的后端服务器触发的,因此后端服务器除了HTTP之外没有其他访问权限.

我已经使用相应的ACL实现了以下清除规则,它可以正常工作

curl -X PURGE http://www.example.com/image/123/photo-100-150.jpg
Run Code Online (Sandbox Code Playgroud)

但我希望能够使用Regex通过HTTP清除URL

curl -X PURGE http://www.example.com/image/123/*.jpg
Run Code Online (Sandbox Code Playgroud)

这样我想在上传新内容后清除此图像的所有缩放版本.有办法吗?

mk_*_*mk_ 12

试试这个:

如果清漆3.0及以上.

vcl_recv {
    if (req.request == "PURGE") {
             if (!client.ip ~purge){
                     error 405 "Not allowed";
             }
     ban("req.http.host == " +req.http.host+" && req.url ~ "+req.url);
     error 200 "Ban added";

    }
Run Code Online (Sandbox Code Playgroud)


Egi*_*jus 7

首先定义谁可以使用清除的白名单,然后在您的 VCL 中添加清除器节。

acl purge {
"127.0.0.1";
"10.22.0.0"/16;
}


sub vcl_recv {


if (req.http.X-Purge-Regex) {
        if (!client.ip ~ purge) {
            error 405 "Varnish says nope, not allowed.";
        }
        ban_url(req.http.X-Purge-Regex);
        error 200 "The URL has been Banned.";
}
Run Code Online (Sandbox Code Playgroud)

Varnish 将使用标题的值X-Purge-Regex来创建禁令。

那么你可以禁止这样的事情:

curl -v -X PURGE -H 'X-Purge-Regex: ^/assets/*.css' varnishserver:6081
Run Code Online (Sandbox Code Playgroud)

或者

curl -v -X PURGE -H 'X-Purge-Regex: ^/images/*' varnishserver:6081
Run Code Online (Sandbox Code Playgroud)

varnishserver 是您的清漆服务器的地址。