swagger配置正式環(huán)境中不可訪問的問題
swagger配置正式環(huán)境中不可訪問
Swagger是我們常用的API Doc工具,非常便于開發(fā)人員調試,后臺和前端開發(fā)人員協(xié)作,以及對外公布API使用。
如何在生產環(huán)境中禁止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("管理系統(tǒng)接口文檔")
.description("后臺管理 API 接口文檔")
.version(DocumentationType.SWAGGER_2.getVersion())
.build();
}
}以下是正式環(huán)境訪問

swagger無法打開的說明
最近項目集成swagger2,結果本地swagger-ui.html可以打開,但是線上環(huán)境卻無法打開。倒騰了一番終于解決問題
總結了以下幾個解決方案
1.@EnableWebMvc注解必須去掉!
2.請實現(xiàn)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配置(當前項目踩坑點)
檢查前端代碼,發(fā)現(xiàn)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環(huán)境中,后端的api地址恰好為http://server-service:8080/,所以這個配置會導致請求直接轉發(fā)到后端接口,導致無法訪問頁面。
事實上,針對swagger,前端nginx不需要做任何映射,直接請求 http:// {后端公網(wǎng)host}/swagger-ui.html 即可訪問。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
mybatis中如何傳遞單個String類型的參數(shù)
這篇文章主要介紹了mybatis中如何傳遞單個String類型的參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
Java數(shù)據(jù)結構及算法實例:選擇排序 Selection Sort
這篇文章主要介紹了Java數(shù)據(jù)結構及算法實例:選擇排序 Selection Sort,本文直接給出實現(xiàn)代碼,代碼中包含詳細注釋,需要的朋友可以參考下2015-06-06
SSH框架網(wǎng)上商城項目第29戰(zhàn)之使用JsChart技術顯示商品銷售報表
這篇文章主要為大家詳細介紹了SSH框架網(wǎng)上商城項目第29戰(zhàn)之使用JsChart技術顯示商品銷售報表,感興趣的小伙伴們可以參考一下2016-06-06
SpringBoot框架實現(xiàn)切換啟動開發(fā)環(huán)境和測試環(huán)境
這篇文章主要介紹了SpringBoot框架實現(xiàn)切換啟動開發(fā)環(huán)境和測試環(huán)境,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
詳解Java使用Pipeline對Redis批量讀寫(hmset&hgetall)
本篇文章主要介紹了Java使用Pipeline對Redis批量讀寫(hmset&hgetall),具有一定的參考價值,有興趣的可以了解一下。2016-12-12
Docker容器使用宿主機上的mongod/redis等服務詳解
這篇文章主要介紹了Docker容器使用宿主機上的mongod/redis等服務詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11

