在 Varnish 中通过正则表达式与标准运算符匹配 req.http.Host

在 Varnish 中通过正则表达式与标准运算符匹配 req.http.Host

我可以做以下任一件事:

使用标准运算符进行主机匹配:

if (req.http.Host == "domain1.com" || req.http.Host == "domain2.com") { ... }

通过正则表达式进行主机匹配:

if (req.http.Host ~ "^(domain1.com|domain2.com)$") { ... }

我的问题是,选项 #2 在性能或安全性方面是否不好?我知道省略开始和结束正则表达式字符可能会允许某人放置类似的域名domain1.com.someotherdomain.net,但使用 ^ 和 $ 似乎是不可能的。

如果您能就如何处理这一问题提出任何其他想法/意见,我们将不胜感激。

答案1

嗯,我确实不认为使用上述任何方法会对性能产生任何影响,但我通常喜欢使用正则表达式,因为它给了我强大功能和灵活性,可以匹配很多东西。

关于安全性,您说的完全正确,使用第一个选项可能会被滥用。

如果我正在做这样的工作,我肯定会选择第二种方法。

相关内容