匹配的顺序是先匹配普通字符串,而后再匹配正则表达式。另外普通字符串匹配顺序是根据配置中字符长度从长到短,也就是说使用普通字符串配置的location顺序是可有可无的,反正最后nginx会根据配置的长短来进行匹配,可是须要注意的是正则表达式按照配置文件里的顺序测试。找到第一个比配的正则表达式将中止搜索。html
通常状况下,匹配成功了普通字符串location后还会进行正则表达式location匹配。有两种方法改变这种行为,其一就是使用“=”前缀,这时执行的是严格匹配,而且匹配成功后当即中止其余匹配,同时处理这个请求;另一种就是使用“^~”前缀,若是把这个前缀用于一个常规字符串那么告诉nginx 若是路径匹配那么不测试正则表达式。nginx
location = /uri =开头表示精确匹配,只有彻底匹配上才能生效。正则表达式
location ^~ /uri ^~ 开头对URL路径进行前缀匹配,而且在正则以前。浏览器
location ~ pattern ~开头表示区分大小写的正则匹配。
测试
location ~* pattern ~*开头表示不区分大小写的正则匹配。spa
location /uri 不带任何修饰符,也表示前缀匹配,可是在正则匹配以后。code
location / 通用匹配,任何未匹配到其它location的请求都会匹配到,至关于switch中的default。 htm
location ^~ /helloworld { #1 return 601; } #location /helloworld { #2 # return 602; #} location ~ /helloworld { return 603; }
location /helloworld/test/ { #1 return 601; } location /helloworld/ { #2 return 602; }
location /helloworld/test/ { #1 return 601; } location ~ /helloworld { #2 return 602; } location ~ /helloworld/test { #3 return 603; }