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

Docker环境下Nginx代理/api路径返回404,配置哪里出错了?

问题原因

你当前的Nginx配置核心问题是location /api块的proxy_pass规则导致请求路径转发错误:
当proxy_pass的目标地址末尾不带斜杠时,Nginx会将匹配到的location路径前缀原样传递给上游服务。比如你请求localhost:81/api/getUser,实际转发到sitr-api服务的路径是/api/getUser,而你直接访问localhost:9901/getUser就能正常返回,说明你的.NET后端接口没有配置/api开头的全局路由前缀,自然找不到对应路径返回404。

解决方案

方案1(推荐,无需修改后端代码)

修改Nginx配置中/api块的proxy_pass,末尾添加斜杠:

location /api {
    # 末尾加/,Nginx会自动去掉/api前缀再转发
    proxy_pass http://sitr-api:80/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}

修改后重启sitr-nginx容器即可生效,此时请求localhost:81/api/getUser会被转发为sitr-api:80/getUser,和你直接访问9901端口的路径一致。

方案2(适配后端统一前缀场景)

如果你后端计划所有接口都统一带/api前缀,可以在.NET程序中配置全局路由前缀,无需修改Nginx配置即可正常匹配。

内容的提问来源于stack exchange,提问作者George Wurthmann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:30:00