Nginx(六) Nginx location 匹配顺序及优先级深究(亲测有效)

Nginx配置文件详解请参考另一篇文章 Nginx(三) 配置文件详解

本篇文章主要是探讨Nginx location的匹配顺序,依照惯例,我们还是先贴结论再看测试结果。

匹配location的过程,其实可以理解成一个在众多选项中寻找最佳答案的过程。当然,"="代表的就是正确答案,而其它情况只是相对于正确答案的最佳选项。下面我们来看具体的匹配顺序:

1.Nginx按照location配置顺序依次进行匹配;

2.如果请求URI部分前缀或全部与location uri匹配,先记录下来(如有匹配长度更长的则覆盖记录),继续向下匹配,再看看是否还有最佳答案*(*备胎,最后再考虑你

3.如果与"="选项精确匹配,则立刻停止匹配*(*高富帅,你就是我心目中的白马王子

4.如果跟"^~"选项匹配成功,还要继续完成所有匹配(最长匹配策略),直到找到与"^~"匹配长度最长的那个选项后再停止匹配(如果实在找不到其它的,就只能拿这个凑合了)(虽然都不帅,但我要找最有钱的那位)

5.如果跟"~"或"~*"任意选项匹配成功,则立刻停止*(好不容易遇到一个爆发户,不拖泥带水,立刻下手)*;

6.完成所有匹配。 前面5步中,每一步但凡匹配成功都会覆盖结果记录。如果匹配过程能进入第6步,说明请求URI前缀与location uri匹配是最好的结果了,最终的结果记录也就是最佳答案*(在备胎中选择最佳备胎,残忍,现实)*。

具体测试过程及结果,请移步另一篇文章

最后,我们根据上面的匹配顺序对各种匹配规则的作用优先级做个排序。

|-------|---------|--------------------------|
| 优先级排序 | 匹配规则 | 修饰符 |
| 1 | 精确匹配 | = |
| 2 | 指定字符串开头 | ^~ |
| 3 | 正则匹配 | ~、~* 、!~、!~*、...$) |
| 4 | 通用匹配 | /: |

下面,我们开始测试。

测试1:

相关推荐
AI分享猿3 小时前
小白学规则编写:雷池 WAF 配置教程,用 Nginx 护住 WordPress 博客
java·网络·nginx
敲不响的键盘4 小时前
Nginx Location匹配与Proxy_pass匹配规则
运维·nginx
努力进修18 小时前
跨地域传文件太麻烦?Nginx+cpolar 让本地服务直接公网访问
运维·nginx·cpolar
rit84324991 天前
在Ubuntu上配置Nginx实现开机自启功能
数据库·nginx·ubuntu
一勺菠萝丶1 天前
芋道后端部署后总自己挂?从 Nginx 报错到 OOM Kill 的完整排查与修复(2核2G 服务器实战)
服务器·chrome·nginx
神奇侠20241 天前
基于spring-boot-admin实现对应用、数据库、nginx等监控
java·数据库·nginx
IT小哥哥呀1 天前
Nginx高可用配置实战:负载均衡 + 健康检查 + 动态扩展
运维·nginx·负载均衡·devops·日志分析·openresty·动态扩展
toooooop82 天前
Nginx 反向代理 HTTPS CDN 配置检查清单(避坑版)
运维·nginx·https·cdn
群联云防护小杜2 天前
国产化环境下 Web 应用如何满足等保 2.0?从 Nginx 配置到 AI 防护实战
运维·前端·nginx
尽兴-2 天前
[特殊字符] 微前端部署实战:Nginx 配置 HTTPS 与 CORS 跨域解决方案(示例版)
前端·nginx·https·跨域·cors·chrom