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