list - 在 VCL(Varnish 配置语言)中定义列表

标签 list variables acl varnish varnish-vcl

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

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

我可以只使用单独的 RegEx 测试,但如果我想在 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);
  }
}

关于list - 在 VCL(Varnish 配置语言)中定义列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7685209/

相关文章:

c++ - 为什么在 C++ 中有不同的变量初始化方式?

javascript - 变量条件未按预期声明

c# - 更改文件的 ACL 以允许所有人完全访问

python - 如何将列表复制一定次数

css - 我可以使用 list-style-type 到 div 标签吗?

python - 在 for 循环的每次迭代中使用不同的除数创建可整除数字的列表

python - 将变量更新为多处理 python

c# - 如何在 .NET Core 2 中使用 ACL?

amazon-web-services - CloudFormation - 用户不拥有网络 ACL

java - 使用循环 for 将内容添加到 linkedList java