匹配优先级
优先级从上到下依次降低
精确匹配 (=
),用 =
前缀进行精确匹配,只有当请求的 URI 与指定的路径完全匹配时,才会使用该配置块
location = /exact/match {
# 只有当请求的 URI 是 /exact/match 时才会匹配
}
1
2
3
2
3
前缀匹配 (^~
),没有前缀的 location
配置块会进行前缀匹配,匹配请求 URI 的开头部分
location /prefix/match {
# 所有以 /prefix/match 开头的请求都会匹配
}
1
2
3
2
3
以 ^~
开头的前缀匹配,^~
前缀表示如果该前缀匹配成功,则停止进一步的正则表达式匹配,适用于需要高效匹配静态内容的场景
location ^~ /static/ {
# 所有以 /static/ 开头的请求都会匹配,并且不会继续进行正则匹配
expires max #通常结合 ^~ 一起使用,设置静态资源缓存
}
1
2
3
4
2
3
4
正则表达式匹配 ~ 和 ~*
~
:区分大小写的正则表达式匹配
~*
:不区分大小写的正则表达式匹配
location ~ \.php$ {
# 区分大小写,匹配所有以 .php 结尾的请求
}
location ~* \.(jpg|jpeg|png|gif|css|js)$ {
# 不区分大小写,匹配所有以 .jpg、.jpeg、.png、.gif、.css、.js 结尾的请求
}
1
2
3
4
5
6
7
2
3
4
5
6
7
以 /
结尾的前缀匹配:这是一种特殊的前缀匹配,通常用于目录索引
location / {
# 任何请求都会匹配到这里,因为 / 是所有 URI 的前缀
}
1
2
3
2
3