当前位置: 首页 > 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 {
        # 强制前缀匹配优先于正则
    }
    
http://www.dtcms.com/a/118597.html

相关文章:

  • 条件概率、概率乘法公式、全概率公式和贝叶斯 (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模型
  • 牛客华为机试--HJ48 从单向链表中删除指定值的节点C++
  • 典型反模式深度解析及重构方案
  • 什么是 Git?为什么要用版本控制?
  • Python爬虫第三战(使用session登录小说网获取书单)
  • 蓝桥备赛指南(14):树的直径与重心
  • 判断矩阵A和矩阵B是否相似?
  • 解决使用PendingIntent.getBroadcast时出现java.lang.IllegalArgumentException异常的问题
  • (四十)Dart 中的空安全(Null Safety)教程
  • Web品质 - 重要的HTML元素
  • Linux 命令清单(Linux Command List)