在 Nginx 配置中,当请求 /portal/agent/sse 时,会匹配 location ~* /sse$ 规则,而不是 location /portal。原因如下:
匹配规则解析
-
location ~* /sse$~*表示 不区分大小写的正则匹配/sse$表示以/sse结尾的路径- 匹配结果:
/portal/agent/sse以/sse结尾,符合该规则
-
location /portal- 普通前缀匹配
- 虽然路径包含
/portal,但优先级低于正则匹配
Nginx 的 location 优先级顺序
- 精确匹配
location = /path(最高优先级) - 正则匹配
location ~ /pattern(按配置文件中的顺序) - 前缀匹配
location /prefix(按最长前缀匹配) - 通用匹配
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 { # 强制前缀匹配优先于正则 }



![[实战] 天线阵列波束成形原理详解与仿真实战(完整代码)](https://i-blog.csdnimg.cn/direct/b7cc3ae4e1a94d4ea5dbc3a014065d48.png#pic_center)















