Nginx匹配规则详细解析
Nginx Location 匹配规则完全解析
第一章:Location 模块基础概念
1.1 什么是 Location 模块
Location 模块是 Nginx 配置中最重要的指令之一,用于定义请求 URI 与配置块之间的映射关系。它决定了客户端请求应该由哪个配置块处理,是 Nginx 实现复杂路由逻辑的核心组件。
基本语法:
location [修饰符] 匹配模式 {# 配置指令
}
典型应用场景:
- 静态文件服务
- 反向代理配置
- URL 重写规则
- 访问控制
- 内容压缩
- 缓存策略
1.2 匹配模式分类
Nginx 支持 5 种匹配模式类型:
类型 | 修饰符 | 示例 | 优先级 |
---|---|---|---|
精确匹配 | = | location = /api | 最高 |
前缀匹配(优先) | ^~ | location ^~ /static | 次高 |
正则匹配 | ~ 或 ~* | location ~ .php$ | 中 |
普通前缀匹配 | 无 | location /images | 低 |
通用匹配 | / | location / | 最低 |
第二章:匹配优先级深度解析
2.1 优先级总览
Nginx 采用分级匹配机制,不同类型的 location 具有明确的优先级顺序:
- 精确匹配 (=):完全匹配请求 URI
- 优先前缀匹配 (^~):最长前缀匹配且阻止正则检查
- 正则匹配 (/*):按配置文件顺序匹配
- 普通前缀匹配:选择最长前缀匹配
- 通用匹配 (/):兜底处理所有请求
2.2 优先级判定流程图
2.3 各类型详细规则
2.3.1 精确匹配 (=)
特性:
• 完全匹配 URI(包含结尾斜杠)
• 区分大小写
• 不支持正则表达式
示例:
location = /login {# 仅匹配 /login 路径# 不匹配 /login/ 或 /LOGIN
}
典型应用:
• 关键接口端点
• 特殊页面入口
• 健康检查端点
2.3.2 优先前缀匹配 (^~)
特性:
• 匹配以指定字符串开头的 URI
• 选择最长匹配路径
• 阻止后续正则