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

nginx路径匹配的优先级

在 Nginx 配置中,当请求 /portal/agent/sse 时,会匹配 location ~* /sse$ 规则,而不是 location /portal。原因如下:


匹配规则解析

  1. location ~* /sse$

    • ~* 表示 不区分大小写的正则匹配
    • /sse$ 表示以 /sse 结尾的路径
    • 匹配结果/portal/agent/sse/sse 结尾,符合该规则
  2. location /portal

    • 普通前缀匹配
    • 虽然路径包含 /portal,但优先级低于正则匹配

Nginx 的 location 优先级顺序

  1. 精确匹配 location = /path(最高优先级)
  2. 正则匹配 location ~ /pattern(按配置文件中的顺序)
  3. 前缀匹配 location /prefix(按最长前缀匹配)
  4. 通用匹配 location /(最低优先级)

验证方法

在 Nginx 配置中添加日志验证:

location ~* /sse$ {
    access_log /var/log/nginx/sse.log;
    # ...其他配置...
}

location /portal {
    access_log /var/log/nginx/portal.log;
    # ...其他配置...
}

请求 /portal/agent/sse 后检查日志文件,会发现记录在 sse.log 中。


强制走 /portal 的方法

如果希望 /portal/agent/sse 匹配到 location /portal,需调整配置:

location ^~ /portal {  # ^~ 表示禁止后续正则匹配
    # 处理所有以 /portal 开头的路径(包括 /portal/agent/sse)
    # 优先级高于正则匹配
}

关键结论

  • 当前配置下,/portal/agent/sse 会匹配 location ~* /sse$
  • 如果需要改变匹配行为,需调整正则表达式或使用 ^~ 强制前缀匹配优先:
    location ^~ /portal {
        # 强制前缀匹配优先于正则
    }
    

相关文章:

  • 条件概率、概率乘法公式、全概率公式和贝叶斯 (Bayes) 公式
  • phpstrom 配置调试 php 项目全流程,弄清一些概念
  • vue项目本地调试使用https
  • 软考案例分析实例答题模板
  • CS内网渗透 - 如何通过冰蝎 Webshell 上线 Weblogic 服务器到 Cobalt Strike 并绕过杀软检测(360、火绒)?
  • 8.2 对话框2
  • 【硬核实战】从零打造智能五子棋AI:JavaScript实现与算法深度解析
  • SpringBoot 基于个性化定制的智慧校园管理系统设计与开发
  • 大模型学习六:‌小米8闲置,通过Termux安装ubuntu做个随身服务器,纯粹碍眼折腾
  • 【MCP-1】MCP是什么,从DEMO入手
  • 从零构建大语言模型全栈开发指南:第五部分:行业应用与前沿探索-5.2.2超级对齐与AGI路径探讨
  • 博途 TIA Portal之1200做从站与调试助手的TCP通讯
  • 深入解析机器学习
  • Python(八)—— 开发
  • 显示器各类异常处理方法
  • [ctfshow web入门] web30
  • Qt子模块的功能介绍
  • Python星球日记 - 第15天:综合复习(回顾前14天所学知识)
  • git命令自动拉去远程分支到本地
  • 基于RoboTwin的数据训练RDT开源VLA模型
  • 时隔3年俄乌直接谈判今日有望重启:谁参加,谈什么
  • 著名植物学家、园艺学家,国际植物园协会原主席贺善安逝世
  • 哪种“网红减肥法”比较靠谱?医学专家和运动专家共同解答
  • 沪喀同心|为新疆青少年提供科普大餐,“小小博物家(喀什版)”启动
  • 上海北外滩,未来五年将如何“长个子”“壮筋骨”?
  • 习近平同巴西总统卢拉会谈