官方文档:Configuring NGINX and NGINX Plus as a Web Server | NGINX Documentation
nginx的匹配符:
| 类型 | 符号 | 含义 |
|---|---|---|
| 精确 | = | #用于标准uri前,需要请求字串与uri完全匹配。 |
| 普通 | #没有符号,且路径是[/xxx],匹配顺序是从长到短,也可以理解为前缀匹配。 | |
| 默认 | #没有符号,且路径为[/],也可以理解为兜底匹配。 | |
| 前缀匹配方式 | ^~ | #是前缀匹配,不是正则匹配。与类似SQL中【Like ‘/xxx%’】 |
| 正则匹配方式 | ~ | #区分大小写 |
| 正则匹配方式 | ~* | #不区分大写 |
| 正则匹配方式 | !~ | #区分大小写不匹配 |
| 正则匹配方式 | !~* | #不区分大小写不匹配 |
| 正则表达符号 | ^ | #匹配正则开头 |
| 正则表达符号 | $ | #匹配正则结尾 |
| 正则表达符号 | \ | #转义字符。可以转. * ?等 |
| 正则表达符号 | * | #代表匹配0到无限次数,其中【.*】代表任意长度的任意字符 |
| 正则表达符号 | | | #代表或者,一般与()一起,比如(ab|bc),代表ab或bc都能匹配成功,但ac不能。 |
| 正则表达符号 | 其他符号,比如:+\w[]等,见 正则表达式:认识与基础 – 未名 |
多个 location 配置的情况下匹配顺序如下表:
| 优先顺序 | 描述 | 示例 |
| 1 | 首先精确匹配 = ,找到就停止。 | location = /uri |
| 2 | 其次前缀匹配: a)、有 ^~ ,则找到第一个匹配后时停止。受文件中先后顺序影响。 b)、没有 ^~ ,则以匹配长度的,最长的为准。不受文件中先后顺序影响,而且匹配成功会继续做正则匹配。 x)、所以,示例【location /test】与【location ^~ /test】是冲突的,只能二选一使用。 | location ^~ /uri location /uri |
| 3 | 后按文件中先后顺序,做正则匹配,找到就停止。 注意: a)、 ~ 优先于 ~*(也就是区分大小写优先)。 b)、在2b有结果,但3没有结果时,则使用2b的结果。 c)、在2b和3都有结果时,使用3的结果。 | location ~ pattern location !~ pattern |
| 4 | 最后是默认的/ | location / |
发表回复