Bug:Nginx 转发末尾斜杠导致 404 问题分析

【问题描述】使用 IP 访问是否带 / 均正常,Nginx 配置负载均衡后:

复制代码
请求 /api-gateway/api/report/analysis/ 正常工作
请求 /api-gateway/api/report/analysis 返回 404

【Nginx 配置】

复制代码
location ^~ /api-gateway/ {
    proxy_pass http://backend-service/;
    # ... 其他配置
}

【后端接口】

复制代码
接口路径: /api/report/analysis/
请求方法: POST
功能描述: 对查询结果进行智能解读分析

【原理】当 location 指令和 proxy_pass 指令都包含路径时,Nginx 会执行路径替换操作:

  • location 匹配到的前缀部分会被 proxy_pass 中指定的路径替换

  • 剩余的 URI 部分会直接拼接到 proxy_pass 的地址后面

    location ^~ /api-gateway/ → proxy_pass http://backend-service/
    ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^
    这部分会被替换 替换成这个

【请求带末尾斜杠】

复制代码
原始请求: /api-gateway/api/report/analysis/
         |______________||____________________|
          匹配部分(被替换)    剩余部分(保留)

转发结果: http://backend-service/ + api/report/analysis/
       = http://backend-service/api/report/analysis/

【请求不带末尾斜杠】

复制代码
原始请求: /api-gateway/api/report/analysis
         |______________||___________________|
          匹配部分(被替换)    剩余部分(保留)

转发结果: http://backend-service/ + api/report/analysis
       = http://backend-service/api/report/analysis

**【问题】为什么不走 Nginx 时带不带斜杠都可以?**大多数现代 Web 框架都内置了对末尾斜杠的容错处理,比如重定向机制。通过 Nginx 代理访问,这种自动重定向机制可能不生效,或者 Nginx 拦截了重定向响应。

复制代码
【NG】
路由匹配失败,后端无这样的接口:http://backend-service/api/report/analysis

【IP】
依赖Flask等框架重定向:http://ip:port/api/report/analysis
相关推荐
初圣魔门首席弟子1 天前
bug20260415
c++·bug
万粉变现经纪人1 天前
如何解决 pip install flash-attention 报错 需要 SM_80+(Ampere)架构 问题
python·架构·django·bug·virtualenv·pip·pygame
zhanglianzhao2 天前
Gazebo仿真机器人和相机时Gazebo ROS Control 插件偶发性加载失败bug分析
机器人·bug·ros·gazebo·ros_control
techdashen2 天前
Go 1.25 新特性:Flight Recorder —— 像黑匣子一样捕捉线上 Bug
java·golang·bug
悟空爬虫-彪哥3 天前
VRCFaceTracking安装和iPhone面捕配置教程,有bug
ios·bug·iphone
22信通小白4 天前
USRP初学者使用手册(基础配置及bug记录)——Linux+Clion(单台X310收发)
linux·运维·c++·5g·bug·信息与通信
麦哲思科技任甲林4 天前
需求还是bug?
bug·需求·需求变更
万粉变现经纪人5 天前
如何解决 pip install tensorflow-gpu 报错 未检测到 CUDA 驱动 问题
人工智能·python·深度学习·aigc·tensorflow·bug·pip
初圣魔门首席弟子6 天前
boost配置遇到的bug
bug
万粉变现经纪人6 天前
如何解决 pip install ta-lib 报错 本地 TA-Lib 库未安装 问题
数据库·python·scrapy·oracle·bug·pandas·pip