Nginx 使用ngx_http_map_module模块的map指令遇到的常见问题。

ngx_http_map_module

请先看参阅的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正则,参阅里有直达文档。

注意,在通过网页测试静态资源的时候,一定注意勾选禁用缓存,不然会导致浏览器缓存后,不会请求nginx的。

参阅:

Nginx使用的正则表达式文档
Nignx map指令

posted @ 2022-11-22 21:01  星小梦  阅读(955)  评论(0)    收藏  举报