多个 location 配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考):
| 首先匹配 = | |
| 其次匹配 ^~ | |
| 其次是按文件中顺序的正则匹配 | |
| 最后是交给 / 通用匹配 | |
| 当有匹配成功时候,停止匹配,按当前匹配规则处理请求 | 
例子,有如下匹配规则:
| location = / { | |
| # 规则 A | |
| } | |
| location = /login { | |
| # 规则 B | |
| } | |
| location ^~ /static/ { | |
| # 规则 C | |
| } | |
| location ~ .(gif|jpg|png|js|css)$ { | |
| # 规则 D | |
| } | |
| location ~* .png$ { | |
| # 规则 E | |
| } | |
| location / { | |
| # 规则 F | |
| } | 
那么产生的效果如下:
| 访问根目录 /, 比如 http://localhost/ 将匹配规则 A | |
| 访问 http://localhost/login 将匹配规则 B,http://localhost/register 则匹配规则 F | |
| 访问 http://localhost/static/a.html 将匹配规则 C | |
| 访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则 D 和规则 E,但是规则 D 顺序优先,规则 E 不起作用,而 http://localhost/static/c.png 则优先匹配到规则 C | |
| 访问 http://localhost/a.PNG 则匹配规则 E,而不会匹配规则 D,因为规则 E 不区分大小写。 | 
