Nginx的Location匹配顺序是一个经常出错的地方,下面是location优先级排序示例:
location = /uri #精确匹配,优先级最高
location ^~ /uri #普通字符串匹配,不支持正则表达式,当匹配成功后停止其他location匹配,优先级高于正则
location ~ #区分大小写的正则匹配
location ~* #不区分大小写的正则匹配
location /uri #前缀匹配
location / #通用匹配
官方的location匹配示例:
location = / {
[ configuration A ]
}
location / {
[ configuration B ]
}
location /documents/ {
[ configuration C ]
}
location ^~ /images/ {
[ configuration D ]
}
location ~* \.(gif|jpg|jpeg)$ {
[ configuration E ]
}
#如果请求的是“/”则匹配到A,符合精准匹配
#如果请求的是“/index.html”则匹配到B
#如果请求的是“/documents/document.html”则匹配到C
#如果请求的是“/images/1.gif”则匹配到D
#如果请求的是“/documents/1.jpg”则匹配到E