nginx-location匹配规则
是根据ip+port来匹配的,/后边表示匹配的路径(例如:/Test相当于后台存在一个Test控制器(重点)
语法规则:
| location [ = | ~ | ~* | ^~ ] /uri/ { ... } |
1、 任意匹配
2、“=” 精准匹配
| # 精确匹配 / ,可以匹配类似 `http://www.example.com/` 这种请求,'/'后不能带有任何内容 |
3、“~” 大小写敏感
| location ~ /Test/ { |
| #规则 |
| } |
| |
| #可以匹配 http://www.test.com/Test/ |
| #不可以匹配 http://www.test.com/test/ |
4、 “~*” 大小写忽略
| #可以匹配 http://www.test.com/test/ |
5、 “^~” 只匹配uri开头
| #以 /test/ 开头的请求,都可以匹配上 区分大小写 |
| #可以匹配 http://www.test.com/test/ |
6、“@” 命名匹配
| #以 /img/ 开头的请求,如果链接的状态为 404。则会匹配到 @img_err 这条规则上。 |
| location /img/ { |
| error_page 404 @img_err; |
| } |
7、以内容结尾匹配
| location ~* \.(gif|jpg|jpeg)$ { |
| |
| } |
8、location匹配优先级
在配置中需要注意的一点就是location的匹配规则和优先级
- = 开头表示精确匹配
- ^~ 开头表示uri以某个常规字符串开头,不是正则匹配;
- ~ 开头表示区分大小写的正则匹配;
- ~* 开头表示不区分大小写的正则匹配;
- / 通用匹配, 如果没有其它匹配,任何请求都会匹配到;
9、location的匹配流程
A、判断是否精准匹配,如果匹配,直接返回结果并结束搜索匹配过程。
B、判断是否普通匹配,如果匹配,看是否包含^~前缀,包含则返回,否则记录匹配结果,(如果匹配到多个location时返回或记录最长匹配的那个)
C、判断是否正则匹配,按配置文件里的正则表达式的顺序,由上到下开始匹配,一旦匹配成功,直接返回结果,并结束搜索匹配过程。
D、如果正则匹配没有匹配到结果,则返回步骤B记录的匹配结果。
注意:
A、多个普通匹配的location时,和location的顺序无关,总是匹配所有的location,然后取匹配最长的location作为结果
B、多个正则匹配的location时,和顺序有关,从上到下依次匹配,一旦匹配成功便结束,直接返回结果。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器