匹配优先级
优先级从上到下依次降低
精确匹配 (=),用 = 前缀进行精确匹配,只有当请求的 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
上次更新: 7/30/2025, 4:43:18 PM