配置 varnish 根据 url 和授权标头使缓存失效

配置 varnish 根据 url 和授权标头使缓存失效

我想知道是否可以通过 url 使缓存的对象无效。

假设我有 url /api/0.1/user 和 url /api/0.1/userFriends,我想知道是否有办法在对 /api/0.1/userMedia 发出 PUT 请求时使 /api/0.1/user 无效。但是它只能通过 http 标头授权使缓存无效。因此基本上只能使执行 PUT 请求的用户的缓存无效。

我想我需要一个禁令配置才能使其工作,但是我对 varnish 还很陌生,因此如果能举个例子我将非常感谢!

答案1

应该是可以的。如果你在 vcl_recv 中有类似这样的内容:

sub vcl_recv {
  if (req.request == "PUT") {
    http.req.x-url = regsub(req.url, "(/api/0.1/user)Media", "\1");
    ban_url("^" + x-url);
    unset req.http.x-url;
  }
}

这是完全未经测试的。有关 vcl 语法和语义的更多信息,请参阅“man vcl”。

相关内容