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

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 的路由逻辑!

相关文章:

  • Spring Boot 调优的 12 个关键节点
  • 高性能管线式HTTP请求
  • Flink Checkpoint SavePoint 深度剖析与工程实践
  • 2025年文件加密软件——数据保险箱,为您的文件上锁
  • SAP ERP 系统拆分的七大挑战
  • 线程安全问题的成因
  • 算力服务器和GPU服务器之间的联系
  • 汽车恒温器行业2025数据分析报告
  • 汽配快车道:助力汽车零部件行业的产业重构与数字化出海
  • 国芯思辰| SerDes芯片SCS5501/SCS5502助力汽车触屏流媒体后视镜,兼容MAX9295A/MAX96717
  • React vs Vue.js:选哪个框架更适合你的项目?
  • 华为OD机试真题——分糖果(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 简述各类机器学习问题
  • A2A协议(Agent-to-agent Protocol)学习
  • GitLab 18.0 正式发布,15.0 将不再受技术支持,须升级【一】
  • 【CF】Day66——Edu 168.D + CF 853 (Div. 2).C (树 + 二分 + 贪心 | 组合数学)
  • RK3568DAYU开发板-平台驱动开发:GPIO驱动
  • 二、网络安全常见编码及算法-(2)
  • java虚拟机2
  • 华为OD机试真题——最长的顺子(2025B卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 公司简介网站怎么做/宁波江北区网站推广联系方式
  • 微信网站与响应式网站/seo教程网站优化
  • 巨野网站建设/哔哩哔哩b站在线看免费
  • 网站原型的交互怎么做/seo草根博客
  • 做网站编辑有什么发展/灵宝seo公司
  • wordpress 独立应用页面/网站seo优化运营