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


     后端代码配置

    1. #在StartUp.cs文件中Configure方法中增加以下代码
    2. app.UseSwagger(c =>
    3. {
    4. //代理路径访问
    5. c.PreSerializeFilters.Add((doc, item) =>
    6. {
    7. //根据代理服务器提供的协议、地址和路由,生成api文档服务地址
    8. doc.Servers = new List
    9. {
    10. new OpenApiServer
    11. {
    12. //此处等同于设置接口访问路径前缀
    13. //以192.168.1.33:5001/User/Login接口为例,以下代码生成内容为
    14. //http://192.168.1.33:50001/oaapi/User/Login
    15. //item.Scheme表示协议类型
    16. //item.Host.Value表示IP地址/域名
    17. //item.Headers["X-Forwarded-Port"]为nginx中配置的proxy_set_header X-Forwarded-Port $server_port内容
    18. //item.Headers["X-Forwarded-Prefix"]为nginx中配置的proxy_set_header X-Forwarded-Prefix oaapi内容
    19. //如果nginx配置的请求头中存在X-Forwarded-Port,则增加X-Forwarded-Port端口内容,否则则不增加
    20. //如果nginx配置的请求头中存在X-Forwarded-Prefix,则增加X-Forwarded-Prefix虚拟路径内容,否则则不增加
    21. Url = @$"{item.Scheme}://{item.Host.Value}
    22. {(string.IsNullOrEmpty(item.Headers["X-Forwarded-Port"].ToString() ) ? "":":" + item.Headers["X-Forwarded-Port"])}
    23. { (string.IsNullOrEmpty(item.Headers["X-Forwarded-Prefix"].ToString()) ? "" : "/" + item.Headers["X-Forwarded-Prefix"])}"
    24. }
    25. };
    26. });
    27. //固定路径访问
    28. //c.RouteTemplate = "api-doc/{documentName}/swagger.json";
    29. });
    30. app.UseSwaggerUI(c =>
    31. {
    32. //代理路径访问
    33. c.ShowExtensions();
    34. c.ValidatorUrl(null);
    35. //GlobalContext.SystemConfig.VirtualDirectory为appsettings中设置的VirtualDirectory内容,如无代理则设置改字段为空
    36. c.SwaggerEndpoint($"{GlobalContext.SystemConfig.VirtualDirectory}/swagger/{"v1"}/swagger.json", "和田玖信OA办公系统 Api v1");
    37. c.RoutePrefix = string.Empty;
    38. c.DocExpansion(DocExpansion.None);
    39. //固定路径访问
    40. //c.RoutePrefix = "api-doc";
    41. //c.SwaggerEndpoint("swagger/v1/swagger.json", "和田玖信OA办公系统 Api v1");
    42. });

    Nginx配置 

    1. #nginx代理设置
    2. server {
    3. listen 50001;#代理后访问端口
    4. server_name 192.168.1.33;#服务器地址(IP/域名)
    5. location /oaapi/ {
    6. proxy_pass http://192.168.1.33:5001/;#需要代理的地址
    7. #配置代理header(请求头)内容
    8. proxy_set_header Upgrade $http_upgrade;
    9. proxy_set_header Connection keep-alive;
    10. proxy_set_header Host $host;
    11. proxy_set_header X-Forwarded-Proto $scheme;
    12. proxy_set_header X-Forwarded-Host $host;
    13. proxy_set_header X-Forwarded-Port $server_port;
    14. proxy_cache_bypass $http_upgrade;
    15. proxy_set_header X-Forwarded-Prefix oaapi; #------其中oaapi可以更换任何路由,即为代理路径内容
    16. proxy_set_header X-Real-IP $remote_addr;
    17. proxy_set_header X-Forwarded-For $remote_addr;
    18. }
    19. }

  • 相关阅读:
    Nginx部署Vue项目css文件能加载但是不生效
    Spring基础篇:面向切面编程
    每天一个数据分析题(三百九十八)- 逻辑回归
    Redis注解式开发并整合ssm项目以及击穿,穿透和雪崩的介绍及解决方案
    【STM32】Systick定时器
    Vue3+Ts+Vite 项目搭建&项目说明
    关于 SAP UI5 所有控件的共同祖先 - sap.ui.base.ManagedObject
    Linux 环境搭建
    CUDA小白 - NPP(9) 图像处理 Statistical Operations
    【LeetCode热题100】【多维动态规划】编辑距离
  • 原文地址:https://blog.csdn.net/MoFe1/article/details/132979490