You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx代理后SpringBoot后端返回404:rmer路径重复原因排查

问题分析与解决方案

从你描述的路径重复(比如实际转发路径变成/rmer/rmer/getAllMvsVDetailC)导致404的情况来看,核心问题大概率出在Nginx的proxy_pass配置是否带尾斜杠的差异上,这是代理配置里最容易踩的坑之一。

关键差异点:proxy_pass末尾的斜杠

Nginx对proxy_pass的处理逻辑会根据末尾是否带斜杠完全不同:

  • 对于正常的/apcc请求:
    如果你的配置是这样的:

    location /apcc/ {
        proxy_pass http://apcc-backend/;
        # 其他配置如proxy_set_header等
    }
    

    当请求/apcc/spd/sensitivePart/findAll/时,Nginx会把location匹配到的/apcc/替换成proxy_pass末尾的斜杠,最终转发到后端的路径是/spd/sensitivePart/findAll/,刚好匹配后端接口。

  • 对于异常的/rmer请求:
    如果你的配置是这样的(不带尾斜杠):

    location /rmer {
        proxy_pass http://rmer-backend;
        # 其他配置
    }
    

    当请求/rmer/getAllMvsVDetailC时,Nginx会把整个匹配到的/rmer加上后续路径,直接转发成/rmer/getAllMvsVDetailC到后端。如果你的后端接口本身是/getAllMvsVDetailC(没有/rmer前缀),就会出现路径重复,导致404。

修复方案

根据后端接口的实际路径调整proxy_pass:

  1. 如果后端rmer服务的接口没有/rmer前缀,修改配置为:

    location /rmer/ {
        proxy_pass http://rmer-backend/;
        # 保持和/apcc一致的其他代理配置
    }
    

    (注意location和proxy_pass都要带尾斜杠,确保Nginx正确替换路径)

  2. 如果后端rmer服务的接口本身就有/rmer前缀,那可能是前端请求路径多写了一层/rmer,需要检查前端的请求URL配置。

排查验证

可以查看Nginx的access日志(通常在/var/log/nginx/access.log),里面会记录实际转发到后端的完整路径,通过日志能直接确认是否出现了路径重复的问题,帮助定位到底是Nginx配置还是前端请求的问题。

内容的提问来源于stack exchange,提问作者Kalio O'Farril

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:12:18