请先看参阅的Nginx Map指令文档后吧。这里的说明比较简略。
基本使用Demo
http {
map "beijing" $Name {
default "中国";
"beijing" "北京";
"shanghai1hao" "上海1号";
"shanghai2hao" "上海2号";
}
}
在需要的地方使用$Name进行引用即可,会根据map指令后的第一个字符串的值进行判断主体中的值。
正则使用
http {
map "hai" $Name {
default "中国";
"beijing" "北京";
~\w+hai\w* "上海1号";
# 可以使用捕获组进行匹配和使用
(\w+)hai "上海1号:$1";
}
}
问题1:nginx: [emerg] pcre_compile() failed: nothing to repeat in "https://().xxx.xxx" at ").dataorigin.tech" in /etc/nginx/conf.d/xxx.conf:xx
这个意思是说,量词号,本身就是匹配所有字符并且匹配0个或多个字符,所以号后面的静态文本匹配就没有意义了,所以这里报错了。更改为类似于\w*这种正则匹配就行,限制下量词匹配的字符范围。
Nginx使用的perl正则,参阅里有直达文档。