LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

网上全是错的!Nginx location 匹配逻辑,看这篇就够了

admin
2026年5月8日 11:20 本文热度 80

Nginx 中最常用也最容易出错的就是 location 配置。网上大部分文章对这部分的讲解都存在错误。其根本原因是 Nginx 在配置友好性上做得并不好,官方文档的描述也较为晦涩,让很多深度使用者都理解错了。

本文将对 location 的匹配规则进行彻底、清晰的梳理。

官方文档参考: 

http://nginx.org/en/docs/http/ngx_http_core_module.html#location


一、location 的四种匹配类型

Nginx 的 server 块中可以存在多个 location,每个 location 都有自己的匹配规则。Nginx 会按照以下四种类型进行匹配(仅匹配 URL 的 path 部分,不包含 query_string):

1. 完全匹配
用 = 表示。请求路径必须与 location 完全相等。 示例: 
location = /xxx {    # 只有路径完全等于 /xxx 才匹配}
2. ^~ 前缀匹配
(无正则前缀匹配) 用 ^~ 表示。请求路径以 location 为前缀即可匹配,匹配成功后不再进行正则匹配。 示例:
location ^~ /images/ {        # 只要路径以 /images/ 开头就匹配}
3.普通前缀匹配
(无符号前缀匹配) 没有前缀符号。请求路径以 location 为前缀即可匹配。 示例:
location /api/ {        # 只要路径以 /api/ 开头就匹配}
4.正则表达式匹配
用 ~(区分大小写)或 ~*(不区分大小写)表示。请求路径被正则表达式匹配即可。 示例:
location ~ \.php$ {    # 只要路径以 .php 结尾就匹配 }


二、location 匹配优先级规则

  1. = 完全匹配 优先级最高,一旦匹配成功,立即停止后续所有匹配。

  2. 其余匹配规则优先级最容易混淆的,也是很多文章写错的地方):

    • 首先对所有前缀匹配(^~ 和普通前缀匹配)同时进行检查;
    • 如果有多个前缀匹配成功,选择匹配字符串最长的那一个(“最长命中”原则),与 location 顺序无关;
    • 如果选中的最长前缀匹配是 ^~ 类型,则立即使用它,停止后续正则匹配;
    • 如果选中的最长前缀匹配是普通前缀匹配(无 ^~),则继续进行正则表达式匹配;
    • 正则表达式按配置文件中出现的顺序依次尝试,只要有一个匹配成功,就立即使用该 location,并停止后续匹配;
    • 若正则也没有匹配,则最终使用前面记住的最长前缀匹配。

三、“最长命中”原则示例


location ^~ /a {    root /;}location ^~ /aaa {    root /aaa;}

请求 /aaa 时,两个 location 都匹配成功; 因为 /aaa 比 /a 更长,所以最终匹配 location ^~ /aaa。

(去掉 ^~ 后结果相同,依然遵循最长匹配原则)


四、综合匹配示例

示例 1:

location /test_1 {    return 400;}location ^~ /test {    return 401;}

  • 请求 /test_1 → 返回 400(说明 ^~ 的优先级并不高于普通前缀匹配,最长匹配原则优先)

示例 2:

location /test_1 {    return 400;}location ^~ /test {    return 401;}location ~/test {    return 402;}

  • 请求 /test_1 → 返回 402此时2种前缀匹配同时进行,找到最长的 location /test_1,此 location 无 ^~ 前缀,所以不阻断正则,最终正则匹配成功
  • 请求 /test → 返回 401(找到最长的 location  ^~ /test,有 ^~ 前缀,阻断正则匹配)



作者简介:从事 Web 前后端开发多年。一直相信“技术应该被说人话”,坚持输出实用易懂的干货内容。闲暇写些随笔,记录行业观察与生活感悟。


阅读原文:点击这里


该文章在 2026/5/8 11:20:54 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-9  粤公网安备44030602007207号