符号“〜”在VCL中的含义是什么?

问题描述 投票:1回答:2

我看到这用于清漆vcl if语句“〜”

if (req.url ~ "phpMyAdmin") {
    return (pass);
}

据我所知,它像==一样有点像in_array()

if ( req.http.User-Agent ~ "(Android|iPhone|iPad|BlackBerry|SAMSUNG)") 
   return(pass);
}

有人可以解释它实际意味着什么。它也是一个默认的php运算符吗?它和使用==有什么区别

varnish
2个回答
5
投票

根据official documentation~是匹配运营商。

==比较两个值,如果它们相等则返回true

~根据正则表达式检查值,如果值匹配则返回true

〜匹配。可以与正则表达式或ACL一起使用。

# match an IP address against an ACL
if (client.ip ~ local) {
  return (pipe);
} 

Varnish使用与Perl兼容的正则表达式(PCRE)。要向PCRE引擎发送标志,例如进行不区分大小写的匹配,请在问号后面的parens中添加标记,如下所示:

# If host is NOT example dot com..
if (req.http.host !~ "(?i)example\.com$") {
    ...
}

-1
投票

我认为在php中没有像“〜”这样的符号。

已经用php文档检查过了。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.