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

SwaggerUI Try It Out在NGINX反向代理下的路径配置问题求助

解决SwaggerUI Try It Out在NGINX反向代理下的路径前缀问题

要让Try It Out请求带上/myapi前缀,需要同时配置ASP.NET Core应用和NGINX反向代理,以下是具体步骤:

ASP.NET Core 配置

1. 设置路径基址

在Program.cs中添加UsePathBase中间件,让应用识别反向代理的子路径:

var app = builder.Build();

// 配置路径基址,匹配NGINX的子路径
app.UsePathBase("/myapi");

// 后续中间件配置(UseSwagger、UseSwaggerUI等)

2. 配置Swagger生成器

在AddSwaggerGen中添加Server配置,告诉SwaggerUI请求的基础URL前缀:

builder.Services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "MyAPI", Version = "v1" });
    
    // 添加反向代理的子路径作为Swagger的服务器地址
    c.AddServer(new OpenApiServer
    {
        Url = "/myapi",
        Description = "NGINX反向代理子路径"
    });
});

3. 可选:调整SwaggerUI访问路径

如果希望通过/myapi/swagger访问SwaggerUI,修改UseSwaggerUI的RoutePrefix:

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "MyAPI V1");
    c.RoutePrefix = "myapi/swagger"; // 让SwaggerUI挂载在子路径下
});

NGINX 配置

确保反向代理配置正确转发请求和请求头,示例配置:

location /myapi/ {
    # 转发到ASP.NET Core应用的地址和端口
    proxy_pass http://localhost:5000/;
    
    # 传递必要的请求头,让应用识别反向代理信息
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Path /myapi;
}

注意proxy_pass末尾的斜杠,它会把/myapi/之后的路径部分转发到后端应用的根路径(比如/myapi/api/myendpoint会转发到后端的/api/myendpoint)。

验证配置

重启ASP.NET Core应用和NGINX后,访问SwaggerUI,使用Try It Out发送请求,检查请求URL是否包含/myapi前缀。

内容的提问来源于stack exchange,提问作者R.Haughton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:01:27