【.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;
		}
	}
相关推荐
姜鱼问生11 小时前
每次开机手动检查 6 样东西?我写了个 2 秒自检脚本
运维·网络·nginx·docker·容器
csdn_aspnet14 小时前
C# .NetCore Swagger ISchemaFilter 处理枚举、特殊类型
c#·.netcore·swagger
code_long19 小时前
.net core 连接打印机 使用zpl指令打印机,并且位图本地渲染zpl指令
c#·.netcore·位图·打印机·模板编辑·模板预览
csdn_aspnet21 小时前
C# .NetCore Swagger ISchemaFilter Long 转 String 防精度丢失
c#·.netcore·swagger
xixingzhe21 天前
Nginx 看懂请求耗时瓶颈
服务器·前端·nginx
北风toto2 天前
Windows 下用 OpenSSL 生成 SSL 密钥并配置 Nginx 教程
windows·nginx·ssl
卜锦元2 天前
Docker Compose 部署 Nginx 1.30.6 完整指南
nginx·docker·容器
小小龙学IT2 天前
Nginx 开源 Web 服务器与反向代理深度解
前端·nginx·开源
csdn_aspnet2 天前
C# .NetCore Swagger ISchemaFilter 注入示例值、描述
c#·.netcore·swagger
Coisinier3 天前
docker命令管理镜像及容器
linux·运维·nginx·docker·容器·操作系统