nginx配置之location匹配规则

 一、 location uri匹配符介绍

location = /uri
精确匹配,优先级最高

location ^~ /uri
以某个uri前缀开头的匹配,不支持正则表达式

location ~ /uri
表示区分大小写的正则匹配
!~表示区分大小写不匹配的正则

location ~* /uri
表示不区分大小的正则匹配
!~*表示不区分大小写不匹配的正则

location /uri
普通匹配,没有匹配模式,只有URL

location /
通用匹配,匹配不到时,会进行通用匹配
任何请求都会匹配

二、 location匹配符优先级顺序

首先匹配 "=" ,其次匹配 "^~" , 然后是按照配置文件中 "~""~*" 的顺序匹配 "~""~*" , 然后是进行普通匹配(/uri),如果最后匹配不到,则进行通用匹配("/")

正则匹配与配置文件location的顺序有关,其他匹配则没有顺序
正则匹配如果有多个匹配,则取最长匹配

匹配优先级: 精确匹配(=)   >  前缀匹配(^~) >  正则匹配(~*|~) >  普通匹配 >  通配(/)

三、示例

location  = / {
  #精确匹配 ,匹配以后执行该location并停止匹配 
  [ configuration A ]

}

location  / {
  #所有都没有匹配到,则执行该location
  [ configuration B ]

 
}

location /documents/ {
  #当比它优先级高的没有匹配时,匹配任何以 /documents/ 开头的uri,此时才会被执行
  [ configuration C ]

}


location ^~ /images/ {
  #匹配任何以 /images/ 开头的uri,匹配符合以后执行该location并停止匹配
  [ configuration D ]

}

location /images/ {
  [ configuration E ]

}

location /images/abc {
  [ configuration F ]

}

location ~ /images/abc/ {
  [ configuration G ]

}

location ~* \.(gif|jpg|jpeg)$ {
  #匹配所有以 gif,jpg或jpeg结尾的请求,但不包含以/images/开头的uri
  [ configuration H ]

}

请求localhost:80/则匹配到A
请求localhots:80/index.html则匹配到B
请求localhost:80/documents/document.html则匹配到C
请求localhost:80/images/都会匹配到D,其中EFG在此配置中无任何意义,匹配到EFG的都会优先匹配D
请求localhost:80/aaa/1.jpg则匹配到H

 

posted @ 2021-02-06 17:08  junffzhou  阅读(375)  评论(0编辑  收藏  举报