location =
/uri =开头表示精确匹配,只有完全匹配上才能生效。
location ^~
/uri ^~
开头对URL路径进行前缀匹配,并且在正则之前。无正则普通匹配(^
表示“非”,~
表示“正则”,字符意思是:不要继续匹配正则)
location ~ pattern ~开头表示区分大小写的正则匹配。!~为区分大小写不匹配的正则
location ~* pattern ~*开头表示不区分大小写的正则匹配。!~*为不区分大小写不匹配的正则
location /uri 不带任何修饰符,也表示前缀匹配,但是在正则匹配之后。
location /
通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default。
注意: 前缀匹配,如果有包含关系时,按最大匹配原则进行匹配。比如在前缀匹配:location /dir1与location /dir1/dir2,如有请求http://localhost/dir1/dir2/file将最终匹配到location /dir1/dir2
优先级:
(location =) > (location 完整路径) > (location ^~ 路径) > (location ,* 正则顺序) > (location 部分起始路径) > (/)
上述的优先级不完全正确
具体规则:
等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他location的匹配项
剩下的几种匹配优先级略复杂,具体可以参考Nginx文档(http://nginx.org/en/docs/http/ngx_http_core_module.html#location)
“最长”命中
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。