3

有没有办法用 Varnish VCL 语言定义域列表?我想 ACL 也有类似的东西。我想做这样的事情(以 ACL 为例)。

acl website_list {
    '(www\.)?domain.tld';
    '(www\.)?domain2.tld';
}
...
if(req.http.Host ~ website_list) return(lookup);

我可以只使用单独的 RegEx 测试,但如果我想在 VCL 的其他地方使用这些域,它就不是很可重用。

谢谢!

4

1 回答 1

0

您可以有一个设置标记标题的测试条件,然后稍后对其进行测试:

sub vcl_recv {
  if (req.http.Host ~ "^(www\.)?domain.tld" || 
      req.http.Host ~ "^(www\.)?domain2.tld") {

    /* Set the magic marker */
    set beresp.http.magicmarker = "1";
  }

  if (resp.http.magicmarker) {
    return(lookup);
  }
}
于 2012-02-04T11:34:17.597 回答