nginx location优先级的深入讲解
location表达式类型
~表示执行一个正则匹配,区分大小写
~*表示执行一个正则匹配,不区分大小写
^~表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他location。
=进行普通字符精确匹配。也就是完全匹配。
@"@"定义一个命名的location,使用在内部定向时,例如error_page,try_files
location优先级说明
在nginx的location和配置中location的顺序没有太大关系。正location表达式的类型有关。相同类型的表达式,字符串长的会优先匹配。
以下是按优先级排列说明:
第一优先级:等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。
第二优先级:^~类型表达式。一旦匹配成功,则不再查找其他匹配项。
第三优先级:正则表达式类型(~~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。
第四优先级:常规字符串匹配类型。按前缀匹配。
location优先级示例配置项如下:
location=/{ #仅仅匹配请求/ [configurationA] } location/{ #匹配所有以/开头的请求。但是如果有更长的同类型的表达式,则选择更长的表达式。如果有正则表达式可以匹配,则 #优先匹配正则表达式。 [configurationB] } location/documents/{ #匹配所有以/documents/开头的请求。但是如果有更长的同类型的表达式,则选择更长的表达式。 #如果有正则表达式可以匹配,则优先匹配正则表达式。 [configurationC] } location^~/images/{ #匹配所有以/images/开头的表达式,如果匹配成功,则停止匹配查找。所以,即便有符合的正则表达式location,也 #不会被使用 [configurationD] } location~*\.(gif|jpg|jpeg)${ #匹配所有以gifjpgjpeg结尾的请求。但是以/images/开头的请求,将使用ConfigurationD [configurationE] }
请求匹配示例
/->configurationA /index.html->configurationB /documents/document.html->configurationC /images/1.gif->configurationD /documents/1.jpg->configurationE
注意,以上的匹配和在配置文件中定义的顺序无关。
总结
到此这篇关于nginxlocation优先级的文章就介绍到这了,更多相关nginxlocation优先级内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。