我正在以kubernetes容器运行的docker容器中运行一个spring boot微服务。
当spring boot应用程序在本地运行时,swagger UI运行良好。
当部署到我们的kubernetes集群中时,我们将在nginx前面将其代理到Pod。
我正在努力弄清楚如何使nginx能够使用醒目的UI。
到目前为止我尝试过的事情
在我的“ ssl.conf”中,我尝试添加以下内容;
location ~ ^/(webjars.*) {
rewrite ^/(.*)$ /$1 break;
proxy_pass https://gw-test-request:443;
}
location ~ ^/(gw.*) {
rewrite ^/(.*)$ /swagger-ui.html break;
proxy_pass https://$1:443;
}
请注意,第二个位置的前缀是我们如何以gw的前缀命名微服务模块。
有了它,当我输入https:/// gw-test时,它会尝试加载大张旗鼓,但随后默默失败。当我观察到正在经历的网络请求时,它不会加载我在本地尝试时所做的一切。
我在本地工作时看到的网络呼叫;
当网络电话位于nginx后面时,我会看到它;
任何帮助将不胜感激。
**编辑**
最后一张屏幕截图上显示的404s原来是200s,但仍然没有加载摇摇欲坠的UI。
**编辑**
正在使用的摇头配置;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
ApiInfo apiInfo = new ApiInfo(
"<>",
"<>",
"<>",
"<>",
new Contact("<>", "<>", "<>"),
"N/A",
"N/A",
new ArrayList<>());
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("<rest controller base package>"))
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo);
}
}
答案 0 :(得分:1)
通常会在以下情况下发生这种情况:您的昂首阔步配置中的安全协议未配置为允许https,默认协议仅允许http连接,因此您必须明确设置协议以包含https
在大张旗鼓的配置中,添加以下行
.protocols(newHashSet("http", "https"));
这应该可以解决您的问题。