当前位置: 首页 > ai >正文

Nginx location匹配模式详解

以下是对 Nginx location 匹配模式的详细说明及代码示例,包含注释解析:


1. 精确匹配(Exact Match)

语法: location = /path { ... }
优先级: 最高,仅当请求路径与 /path 完全一致时触发。

location = /login {# 仅匹配 `/login` 路径(区分大小写)# 例如:https://example.com/loginproxy_pass http://backend/login;
}

2. 前缀匹配(Prefix Match)

普通前缀匹配

语法: location /prefix { ... }
优先级: ,按配置文件顺序匹配,但可能被正则匹配覆盖。

location /static/ {# 匹配以 `/static/` 开头的路径,如 `/static/css/style.css`# 但如果没有 `^~` 修饰符,可能被后续正则匹配覆盖root /var/www/html;
}
优先前缀匹配

语法: location ^~ /prefix { ... }
优先级: 中高,匹配以 /prefix 开头的路径,且不再检查后续正则匹配

location ^~ /images/ {# 匹配以 `/images/` 开头的路径,如 `/images/logo.png`# 即使后续有正则匹配 `/images/.*\.png`,此配置仍优先root /data;
}

3. 正则匹配(Regular Expression Match)

区分大小写的正则

语法: location ~ /regex/ { ... }
优先级: ,按正则出现的顺序匹配,第一个匹配成功的生效。

location ~ \.php$ {# 匹配以 `.php` 结尾的路径(区分大小写),如 `/index.php`# 不会匹配 `/index.PHP`fastcgi_pass php:9000;
}
不区分大小写的正则

语法: location ~* /regex/ { ... }
优先级: ,同上,但忽略大小写。

location ~* \.(jpg|png|gif)$ {# 匹配 `.jpg`, `.png`, `.gif` 结尾的路径,不区分大小写# 如 `/image.JPG` 或 `/image.jpg`expires 30d;
}

4. 最长前缀匹配(Longest Prefix Match)

语法: location /longest/possible/path { ... }
优先级: ,当无精确或正则匹配时,选择最长前缀路径。

location /documents/ {# 匹配 `/documents/` 开头的路径,如 `/documents/report.pdf`root /var/data;
}location /documents/reports/ {# 更长的前缀,如 `/documents/reports/2023.pdf`root /var/special-data;
}

优先级总结

优先级从高到低排序:

  1. 精确匹配 (location = /path)
  2. 优先前缀匹配 (location ^~ /prefix)
  3. 正则匹配 (location ~ /regex/location ~* /regex/)
  4. 普通前缀匹配 (location /path)

完整示例配置

server {listen 80;server_name example.com;# 1. 精确匹配(最高优先级)location = /logo.png {root /var/www/exact;}# 2. 优先前缀匹配(次高优先级)location ^~ /static/ {root /var/www/static;}# 3. 正则匹配(区分大小写)location ~ /user/\d+ {proxy_pass http://user_backend;}# 4. 正则匹配(不区分大小写)location ~* \.(js|css)$ {root /var/www/assets;}# 5. 普通前缀匹配(最低优先级)location / {root /var/www/default;}
}

匹配过程解析

  1. 请求 /logo.png → 命中 location = /logo.png(精确匹配)。
  2. 请求 /static/css/style.css → 命中 location ^~ /static/(优先前缀匹配)。
  3. 请求 /user/123 → 命中 location ~ /user/\d+(正则匹配)。
  4. 请求 /IMAGE.JPG → 命中 location ~* \.(js|css)$(不区分大小写的正则匹配)。
  5. 请求 /about → 命中 location /(普通前缀匹配)。

调试技巧

  • 使用 nginx -T 查看完整配置。
  • 通过 error_log logs/error.log debug; 启用调试日志。
  • 在线工具测试正则:Nginx Location Tester。

通过理解这些规则,可以更精准地控制 Nginx 的路由逻辑!

http://www.xdnf.cn/news/9127.html

相关文章:

  • 解锁 MCP 中的 JSON-RPC:跨平台通信的奥秘
  • nfs下载镜像报错File lookup fail,TTTTTTTTTTTTTTT,内核 6.11.0降到5.15.0
  • JAVA面试复习知识点
  • 【沉浸式解决问题】基于泛型递归,Java中实体类基类开启MybatisPlus的ActiveRecord模式
  • PID控制学习(位置式,增量式,算法优化,多环串级PID)
  • LitCTF 2025 Robbie Wanna Revenge
  • 并发的产生及对应的解决方案之实例举证
  • Java 中经常犯的错误
  • 2025年5月26日第一轮
  • 【springboot项目部署】打包部署
  • 矩阵链乘法问题
  • vae 视频截图 复习 gans和vae的原理区别
  • JVM垃圾回收器详细介绍
  • 注解的使用和自定义
  • Composer 常规操作说明与问题处理
  • 【部署】读取制度类txt文件导入dify的父子分段知识库
  • Kubernetes 1.33您需要了解的和升级新功能
  • 爬虫学习-Scrape Center spa6 超简单 JS 逆向
  • 二叉树遍历
  • 打破壁垒:国内软件业产品与技术割裂困局及工程师产品思维重塑
  • 无网络docker镜像迁移
  • OSC协议简介、工作原理、特点、数据的接收和发送
  • 5月26日day37打卡
  • 【大模型Pre-Training实战总结】实现Qwen3增量预训练,Lora训练与合并
  • 修改mysql 数据库密码记录
  • MySQL数据库零基础入门教程:从安装配置到数据查询全掌握
  • 2025年AIR SCI1区TOP,具有新变异策略和外部存档机制mLSHADE-SPACMA+数值优化与点云配准,深度解析+性能实测
  • 【2025】harbor仓库搭建
  • MAR:无需量化的掩码自回归图像生成模型
  • Windows Server 2016 下封禁端口规避高危漏洞的测试实践