【.net core】yisha框架使用nginx代理swagger接口无法访问问题

后端代码配置

cs 复制代码
#在StartUp.cs文件中Configure方法中增加以下代码
app.UseSwagger(c =>
            {
                //代理路径访问
                c.PreSerializeFilters.Add((doc, item) =>
                {
                    //根据代理服务器提供的协议、地址和路由,生成api文档服务地址
                    doc.Servers = new List<OpenApiServer>
                    {
new OpenApiServer
                        {
                            //此处等同于设置接口访问路径前缀
                            //以192.168.1.33:5001/User/Login接口为例,以下代码生成内容为
                            //http://192.168.1.33:50001/oaapi/User/Login
                            //item.Scheme表示协议类型
                            //item.Host.Value表示IP地址/域名
                            //item.Headers["X-Forwarded-Port"]为nginx中配置的proxy_set_header X-Forwarded-Port $server_port内容
                            //item.Headers["X-Forwarded-Prefix"]为nginx中配置的proxy_set_header X-Forwarded-Prefix oaapi内容
                            //如果nginx配置的请求头中存在X-Forwarded-Port,则增加X-Forwarded-Port端口内容,否则则不增加
                            //如果nginx配置的请求头中存在X-Forwarded-Prefix,则增加X-Forwarded-Prefix虚拟路径内容,否则则不增加
                            Url = @$"{item.Scheme}://{item.Host.Value}
                                    {(string.IsNullOrEmpty(item.Headers["X-Forwarded-Port"].ToString() ) ? "":":" + item.Headers["X-Forwarded-Port"])}
                                    { (string.IsNullOrEmpty(item.Headers["X-Forwarded-Prefix"].ToString()) ? "" : "/" + item.Headers["X-Forwarded-Prefix"])}"
                        }
                    };
                });
                //固定路径访问
                //c.RouteTemplate = "api-doc/{documentName}/swagger.json";
            });
            app.UseSwaggerUI(c =>
            {
                //代理路径访问
                c.ShowExtensions();
                c.ValidatorUrl(null);
                //GlobalContext.SystemConfig.VirtualDirectory为appsettings中设置的VirtualDirectory内容,如无代理则设置改字段为空
                c.SwaggerEndpoint($"{GlobalContext.SystemConfig.VirtualDirectory}/swagger/{"v1"}/swagger.json", "和田玖信OA办公系统 Api v1");
                c.RoutePrefix = string.Empty;

                c.DocExpansion(DocExpansion.None);
                //固定路径访问
                //c.RoutePrefix = "api-doc";
                //c.SwaggerEndpoint("swagger/v1/swagger.json", "和田玖信OA办公系统 Api v1");
            });

Nginx配置

python 复制代码
#nginx代理设置
server {
		listen       50001;#代理后访问端口
		server_name  192.168.1.33;#服务器地址(IP/域名)
		location /oaapi/ {
				proxy_pass http://192.168.1.33:5001/;#需要代理的地址
                #配置代理header(请求头)内容
				proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection keep-alive;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-Host $host;
                proxy_set_header X-Forwarded-Port $server_port;
                proxy_cache_bypass $http_upgrade;
 
                proxy_set_header X-Forwarded-Prefix oaapi;     #------其中oaapi可以更换任何路由,即为代理路径内容
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
		}
	}
相关推荐
Csvn9 小时前
认识 Nginx
后端·nginx
陈希1231 天前
Nginx 从入门到能扛事:反向代理、负载均衡与 HTTPS 实战
nginx·https·负载均衡
木头左1 天前
【Nginx】内网服务源 IP 白名单实战:动态域名解析放行网段 + 端口接管零改造
运维·nginx·白名单·反向代理
skywalk81631 天前
把 去也网站 从 Ubuntu 搬到 FreeBSD:一次 Service Jail + nginx 的部署实录
linux·运维·nginx·ubuntu·freebsd
没差c2 天前
winsw将jar、nginx等注册为Windows服务
windows·nginx·jar
1-1=02 天前
C# IO和序列化
c#·.net·.netcore
宝桥南山3 天前
.NET 11 - 尝试一下Blazor中的新特性SupplyParameterFromTempData
microsoft·微软·c#·asp.net·.net·.netcore
Lsetea4 天前
Docker更新SSL证书后容器仍读旧文件:单文件挂载与目录挂载排查
运维·nginx·docker·https·ssl证书
1-1=04 天前
C# 特性(Attribute)
c#·.net·.netcore
淡海水5 天前
10-01-互操作-C#与C++边界的内存管理
unity·c#·游戏引擎·.netcore·gc