swagger配置正式环境中不可访问的问题

 更新时间:2022年06月14日 09:17:27   作者:大-哥  
这篇文章主要介绍了swagger配置正式环境中不可访问的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

swagger配置正式环境中不可访问

Swagger是我们常用的API Doc工具,非常便于开发人员调试,后台和前端开发人员协作,以及对外公布API使用。

如何在生产环境中禁止swagger了?

@Profile("beta")  // 只允许在测试服务器访问Swagger

package com.demo.swagger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
 * @author HHM
 */
@Configuration
@EnableSwagger2
@Profile("beta")
public class SwaggerConfig {
    @Bean
    public Docket buildDocket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(buildApiInf())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.demo.controller"))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo buildApiInf() {
        return new ApiInfoBuilder()
                .title("管理系统接口文档")
                .description("后台管理 API 接口文档")
                .version(DocumentationType.SWAGGER_2.getVersion())
                .build();
    }
}

以下是正式环境访问

swagger无法打开的说明

最近项目集成swagger2,结果本地swagger-ui.html可以打开,但是线上环境却无法打开。倒腾了一番终于解决问题

总结了以下几个解决方案

1.@EnableWebMvc注解必须去掉!

2.请实现WebMvcConfigurer,并添加如下代码

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
  registry.addResourceHandler("swagger-ui.html")
      .addResourceLocations("classpath:/META-INF/resources/swagger-ui.html");
  registry.addResourceHandler("/webjars/**")
      .addResourceLocations("classpath:/META-INF/resources/webjars/");
}

3.检查配置文件application.properties

将如下配置去掉,或者改成true:

spring.resources.add-mappings=false

将如下配置去掉:

spring.resources.static-locations: classpath:/webapp/

4.查看nginx配置(当前项目踩坑点)

检查前端代码,发现nginx配置有如下一段:

location /api/swagger-ui.html{
        proxy_pass http://server-service:8080/;
        proxy_set_header X-Real-IP $remote_addr;
        client_max_body_size    1000m;
}

由于当前应用部署在k8s环境中,后端的api地址恰好为http://server-service:8080/,所以这个配置会导致请求直接转发到后端接口,导致无法访问页面。

事实上,针对swagger,前端nginx不需要做任何映射,直接请求 http:// {后端公网host}/swagger-ui.html 即可访问。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • java算法之Math.random()随机概率玩法实例演示

    java算法之Math.random()随机概率玩法实例演示

    最近打算整理排序算法,发现很有必要准备一下生成随机数的工具类,下面这篇文章主要给大家介绍了关于java算法之Math.random()随机概率玩法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • 基于Java中的数值和集合详解

    基于Java中的数值和集合详解

    下面小编就为大家带来一篇基于Java中的数值和集合详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Java中Date时区的转换代码示例

    Java中Date时区的转换代码示例

    这篇文章主要给大家介绍了关于Java中Date时区转换的相关资料,当在不同的时区使用相同程序,时间的值只会为当地时间,这样就会造成时间混乱,需要的朋友可以参考下
    2023-07-07
  • springboot集成springsecurity 使用OAUTH2做权限管理的教程

    springboot集成springsecurity 使用OAUTH2做权限管理的教程

    这篇文章主要介绍了springboot集成springsecurity 使用OAUTH2做权限管理的教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Springboot Session共享实现原理及代码实例

    Springboot Session共享实现原理及代码实例

    这篇文章主要介绍了Springboot Session共享实现原理及代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Java实现聊天机器人完善版

    Java实现聊天机器人完善版

    这篇文章主要为大家详细介绍了Java实现聊天机器人完善版,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • JDK8中Optional类巧用之判空操作

    JDK8中Optional类巧用之判空操作

    善用Optional可以使我们代码中很多繁琐、丑陋的设计变得十分优雅,这篇文章主要给大家介绍了JDK8中Optional类巧用之判空的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • IDEA使用Mybatis插件 MyBatisCodeHelper-Pro的图文教程

    IDEA使用Mybatis插件 MyBatisCodeHelper-Pro的图文教程

    这篇文章主要介绍了IDEA使用Mybatis插件 MyBatisCodeHelper-Pro的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Java设计模式之静态代理模式实例分析

    Java设计模式之静态代理模式实例分析

    这篇文章主要介绍了Java设计模式之静态代理模式,结合实例形式分析了静态代理模式的概念、原理、定义与用法,需要的朋友可以参考下
    2018-04-04
  • Spring IoC容器常见获取Bean的方式汇总示例解析

    Spring IoC容器常见获取Bean的方式汇总示例解析

    这篇文章主要为大家介绍了Spring IoC容器常见获取Bean的方式汇总示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09

最新评论