0

我无法使用 CURL 清除清漆中的对象

CURL 命令: curl -X PURGE localhost/public/stylesheets/main.css -v curl 命令返回 200 OK 响应。对象没有被清除

config file in VARNISH : default.vcl
sub vcl_miss {
  if (req.request == "PURGE") {
    purge;
    error 404 "Not in cache.";
  }
   if (req.http.user-agent ~ "spider") {
    error 503 "Not presently in cache";
    }
return (fetch);
}

sub vcl_hit {
  if (req.request == "PURGE") {
    purge;
    error 200 "Purged.";
  }
     return (deliver);
}


sub vlc.recv{
if (req.request == "PURGE") {
    if (!client.ip ~ purge) {
      error 405 "Not allowed.";
    }
    return(lookup);
  }
}

请帮忙

4

1 回答 1

0

在 vcl_recv 上启用 'PURGE' 请求,然后直接在 recv 上执行 purge,是否存在则忽略,这与 purge 过程无关

if (client.ip ~ purge && req.request == "PURGE" ){ purge; error 999; return(error)}
if (req.request != "GET" &&
  req.request != "HEAD" &&
  req.request != "PUT" &&
  req.request != "POST" &&
  req.request != "TRACE" &&
  req.request != "OPTIONS" &&
  req.request != "DELETE") {
    /* Non-RFC2616 or CONNECT which is weird. */
    set req.http.xpass="PASS_header";
    return (pass);
}

很多时候 varnish 没有收到真正的请求者 IP(来自您的提供商的一些非透明代理,如亚马逊负载均衡器),所以忘记 client.ip ACL 并在 req.http.x-forwarded-for 上执行正则表达式以匹配清除允许的 ips……它不安全……但可能是唯一简单的选择

对不起可怜的英语

于 2014-01-28T17:07:25.157 回答