List 用VCL(Varnish配置语言)定义列表

List 用VCL(Varnish配置语言)定义列表,list,variables,acl,varnish,varnish-vcl,List,Variables,Acl,Varnish,Varnish Vcl,有没有办法用Varnish VCL语言定义域列表?我想ACL也有类似的情况。我想这样做(以ACL为例) 我可以只使用单独的正则表达式测试,但如果我想在VCL中的其他地方使用这些域,那么它就不太可重用 谢谢 您可以有一个设置标记头的测试条件,然后稍后进行测试: sub vcl_recv { if (req.http.Host ~ "^(www\.)?domain.tld" || req.http.Host ~ "^(www\.)?domain2.tld") { /* S

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

我可以只使用单独的正则表达式测试,但如果我想在VCL中的其他地方使用这些域,那么它就不太可重用


谢谢

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

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);
  }
}

你需要列表做什么?虽然这解决了给出的具体示例,但它并不是对“如何在VCL中定义列表”问题的回答——我也需要一种方法来定义要匹配的列表,而这个解决方案并不能解决我的问题:t
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);
  }
}