varnish - VCL中的符号“~”是什么意思?
问题描述
我看到这是在varnish vcl if 语句“~”中使用的
if (req.url ~ "phpMyAdmin") {
return (pass);
}
我知道它像==
一段时间一样工作in_array()
if ( req.http.User-Agent ~ "(Android|iPhone|iPad|BlackBerry|SAMSUNG)")
return(pass);
}
有人可以解释一下它的实际含义。它也是默认的 php 运算符吗?它和使用有什么区别==
解决方案
根据官方文档,~
是匹配算子。
==
比较两个值,如果相等则返回真
~
根据正则表达式检查值,如果值匹配则返回 true
~ 匹配。可以与正则表达式或 ACL 一起使用。
# match an IP address against an ACL
if (client.ip ~ local) {
return (pipe);
}
Varnish 使用 Perl 兼容的正则表达式 (PCRE)。要将标志发送到 PCRE 引擎,例如进行不区分大小写的匹配,请在括号内的问号后面添加标志,如下所示:
# If host is NOT example dot com..
if (req.http.host !~ "(?i)example\.com$") {
...
}
推荐阅读
- aws-api-gateway - AWS CDK:在本地测试 api 网关时忽略 Api Key?
- vba - 删除 Access 中的前导零
- ruby-3 - Cardconnect,Ruby 3 并尝试创建没有块的 Proc 对象
- sql - 重命名记录中的字段时在 SQL 中创建表 (BigQuery)
- python - Djoser 400 错误请求登录用户
- grep - GREP 在文本中查找长引号
- c - 配置文件 MPI (PMPI) 和 Fortran
- arduino-uno - 停止 For 循环并继续程序
- node.js - Mongoose,检查数组中是否存在,然后推拉
- batch-file - 只循环一个批处理文件 5 次