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

Docker中Nginx反向代理配置问题:保留原路由实现/api/转发

解决Nginx反向代理适配.NET原控制器路由的方案

不需要修改.NET控制器的路由配置,通过调整Nginx的location /api/配置即可实现需求,两种可行方案如下:

方案一:调整proxy_pass路径(推荐)

利用Nginx的路径匹配特性,在proxy_pass末尾添加斜杠,自动剥离请求URL中的/api/前缀后转发到后端:

location /api/ {
    proxy_pass http://internalapi:8080/;  # 必须保留末尾的斜杠
    # 可选:添加必要的代理头信息,确保后端能正确获取请求信息
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

原理:当请求为http://localhost/api/Client/allprofiles时,Nginx会将/api/之后的Client/allprofiles直接拼接在http://internalapi:8080/后,最终转发到http://internalapi:8080/Client/allprofiles,完美匹配后端[Route("[controller]")]的路由规则。

方案二:使用rewrite规则重写路径

通过rewrite指令手动剥离/api/前缀,再转发到后端:

location /api/ {
    rewrite ^/api/(.*)$ /$1 break;  # 重写URL,去掉/api/前缀
    proxy_pass http://internalapi:8080;
    # 同样可添加代理头信息
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

原理:rewrite规则会将/api/xxx格式的URL重写为/xxx,随后proxy_pass将重写后的路径转发到后端,同样适配原控制器路由。

两种方案都能实现http://localhost/api/{任意URI或查询字符串}直接映射到后端对应API的需求,无需创建多个location规则。

内容的提问来源于stack exchange,提问作者Carrie Kaski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:20:44