프록시 뒤에 배포된 springdoc-openapi-ui(Swager UI)의 "Generated server url"이 잘못됨
Springdoc-openapi-ui(Swagger UI)가 있는 Spring Boot 2.2 응용 프로그램은 HTTP 포트를 실행합니다.애플리케이션은 클러스터 외부에서 서비스로 HTTPS 요청을 수신 라우팅하여 Kubernetes에 배포됩니다.
이 경우 Swagger UI는 다음 위치에서 사용할 수 있습니다.https://example.com/api/swagger-ui.html
잘못된 "Generated server url"이 있습니다.http://example.com/api
그래야만 하는 동안에https://example.com/api
.
Swagger UI는 HTTPS에 의해 액세스되지만 생성된 서버 URL은 여전히 HTTP를 사용합니다.
저도 같은 문제가 있었어요.Below는 나를 위해 일했습니다.
@OpenAPIDefinition(
servers = {
@Server(url = "/", description = "Default Server URL")
}
)
@SpringBootApplication
public class App {
// ...
}
승인된 솔루션이 작동하지 않는 경우 빈을 정의하여 항상 수동으로 URL을 설정할 수 있습니다.
@Bean
public OpenAPI customOpenAPI() {
Server server = new Server();
server.setUrl("https://example.com/api");
return new OpenAPI().servers(List.of(server));
}
그리고 속성을 통해 URL을 정의하고 여기에 주입할 수 있습니다.
springdoc-openapi
FAQ에는 역방향 프록시 뒤에서 Doploy를 배포하려면 어떻게 해야 합니까? 섹션이 있습니다.
FAQ 섹션을 확장할 수 있습니다.
X-Forwarded 헤더가 프록시에 의해 전송되는지 확인합니다.X-Forwarded-For
,X-Forwarded-Proto
기타).
언더도우를 사용하는 경우(spring-boot-starter-undertow
), 속성 설정server.forward-headers-strategy=NATIVE
웹 서버가 X-Forwarded 헤더를 기본적으로 처리하도록 합니다.또한 사용하지 않을 경우 언더로우로 전환하는 것을 고려해 보십시오.
Tomcat을 사용하는 경우 (spring-boot-starter-tomcat
), 속성 설정server.forward-headers-strategy=NATIVE
속성을 신뢰할 모든 내부 프록시의 IP 주소를 나열해야 합니다.server.tomcat.internal-proxies=192\\.168\\.\\d{1,3}\\.\\d{1,3}
기본적으로 10/8, 192.168/16, 169.254/16 및 127/8의 IP 주소는 신뢰됩니다.
또는 Tomcat 집합 특성의 경우server.forward-headers-strategy=FRAMEWORK
.
유용한 링크:
기본값이 아닌 컨텍스트 경로가 있는 경우
@Configuration
public class SwaggerConfig {
@Bean
public OpenAPI openAPI(ServletContext servletContext) {
Server server = new Server().url(servletContext.getContextPath());
return new OpenAPI()
.servers(List.of(server))
// ...
}
}
@서버 주석을 사용하여 "/"로 기본 설정합니다.이렇게 하면 스웨거 API가 사용됩니다.https
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.servers.Server;
@OpenAPIDefinition(servers = {@Server(url = "/", description = "Default Server URL")})
public class FormService implements ApplicationRunner {
....
}
Below는 나를 위해 일했습니다.
@OpenAPIDefinition(servers = {@server(url = "/", description = "Default Server URL")})
@SpringBootApplication
class App{
// ...
}
또는
@OpenAPIDefinition(servers = {@server(url = "/", description = "Default Server URL")})
@Configuration
public class OpenAPIConfig {
@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.info(new Info().title("App name")
.termsOfService("http://swagger.io/terms/")
.license(new License().name("Apache 2.0").url("http://springdoc.org")));
}
}
언급URL : https://stackoverflow.com/questions/60625494/wrong-generated-server-url-in-springdoc-openapi-ui-swagger-ui-deployed-behin
'programing' 카테고리의 다른 글
사이톤의 복소수 (0) | 2023.07.20 |
---|---|
wp_remote_post가 SSL 연결 시 오류를 반환함 (0) | 2023.07.20 |
where 절의 날짜/시간 (0) | 2023.07.20 |
matplotlib: 색상 막대 및 텍스트 레이블 (0) | 2023.07.20 |
가져오기 오류: psycopg2라는 모듈이 없습니다. (0) | 2023.07.20 |