部署在代理后面的 springdoc-openapi-ui (Swagger UI) 中的“生成的服务器 url”错误

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)


Pet*_*tig 9

如果接受的解决方案不适合您,那么您始终可以通过定义 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 可以通过属性定义并注入到这里。


ala*_*ter 8

如果您有非默认上下文路径

@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)


Evg*_*yst 7

springdoc-openapiFAQ 有一个部分:如何springdoc-openapi-ui在反向代理后面部署 Doploy?

\n

常见问题解答部分可以扩展。

\n

确保 X-Forwarded 标头由您的代理(X-Forwarded-For以及X-Forwarded-Proto其他代理)发送。

\n

如果您使用 Undertow ( spring-boot-starter-undertow),请设置属性server.forward-headers-strategy=NATIVE以使 Web 服务器本机处理 X-Forwarded 标头。另外,如果您不使用 Undertow,请考虑切换到它。

\n

如果您使用 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 地址。

\n

或者,对于 Tomcat 设置 property server.forward-headers-strategy=FRAMEWORK

\n

有用的链接:

\n\n

  • 常见问题解答的链接已损坏,正确的链接是 https://springdoc.org/faq.html#how-can-i-deploy-springdoc-openapi-ui-behind-a-reverse-proxy (2认同)