Evg*_*yst 22 swagger swagger-ui spring-boot openapi springdoc-openapi-ui
带有 springdoc-openapi-ui (Swagger UI) 的 Spring Boot 2.2 应用程序运行 HTTP 端口。该应用程序部署到 Kubernetes,并通过 Ingress 将 HTTPS 请求从集群外部路由到服务。
在这种情况下,可用的 Swagger UIhttps://example.com/api/swagger-ui.html有错误的“生成的服务器 url”- http://example.com/api。虽然应该如此https://example.com/api。
虽然 Swagger UI 通过 HTTPS 访问,但生成的服务器 URL 仍然使用 HTTP。
小智 27
我有同样的问题。下面为我工作。
@OpenAPIDefinition(
servers = {
@Server(url = "/", description = "Default Server URL")
}
)
@SpringBootApplication
public class App {
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果接受的解决方案不适合您,那么您始终可以通过定义 bean 来手动设置 url。
@Bean
public OpenAPI customOpenAPI() {
Server server = new Server();
server.setUrl("https://example.com/api");
return new OpenAPI().servers(List.of(server));
}
Run Code Online (Sandbox Code Playgroud)
url 可以通过属性定义并注入到这里。
如果您有非默认上下文路径
@Configuration
public class SwaggerConfig {
@Bean
public OpenAPI openAPI(ServletContext servletContext) {
Server server = new Server().url(servletContext.getContextPath());
return new OpenAPI()
.servers(List.of(server))
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
springdoc-openapiFAQ 有一个部分:如何springdoc-openapi-ui在反向代理后面部署 Doploy?。
常见问题解答部分可以扩展。
\n确保 X-Forwarded 标头由您的代理(X-Forwarded-For以及X-Forwarded-Proto其他代理)发送。
如果您使用 Undertow ( spring-boot-starter-undertow),请设置属性server.forward-headers-strategy=NATIVE以使 Web 服务器本机处理 X-Forwarded 标头。另外,如果您不使用 Undertow,请考虑切换到它。
如果您使用 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 设置 property server.forward-headers-strategy=FRAMEWORK。
有用的链接:
\n\n| 归档时间: |
|
| 查看次数: |
35889 次 |
| 最近记录: |