【问题标题】:Defining lists in VCL (Varnish Configuration Language)在 VCL(Varnish 配置语言)中定义列表
【发布时间】:2011-12-02 20:49:34
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

  • 你需要这些列表做什么?

标签: list variables acl varnish varnish-vcl


【解决方案1】:

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

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
猜你喜欢
  • 1970-01-01
  • 2012-09-05
  • 2012-06-03
  • 2013-02-11
  • 1970-01-01
  • 2017-10-06
  • 2014-08-22
  • 2016-01-21
  • 2012-09-16
相关资源
最近更新 更多