gpt4 book ai didi

spring-boot - Spring Boot 执行器页面返回 http 链接而不是 https

转载 作者:行者123 更新时间:2023-12-03 07:04:20 24 4
gpt4 key购买 nike

我有一个 Spring Boot 2.0.2 应用程序。当我浏览到以下 URL 时:https://my-domain-name/my-application-name/actuator ,我得到以下输出:

{
"_links": {
"self": {
"href": "http://my-domain-name/my-application-name/actuator",
"templated": false
},
"health": {
"href": "http://my-domain-name/my-application-name/actuator/health",
"templated": false
},
"info": {
"href": "http://my-domain-name/my-application-name/actuator/info",
"templated": false
}
}
}

如您所见,内容正常,但所有链接均以“http”开头,而不是以 https 开头。尽管如此,我还是使用 HTTPS 访问该 URL。

我尝试访问的域名是 AWS Route 53 记录,带有 AWS ELB 的别名。此 ELB 将调用重定向到 K8S 集群目标。 Pod 本身运行 Nginx,它将 URL 重定向到另一个运行 Spring Boot 并嵌入 Tomcat 的 Pod,并使用 HTTP 和端口 8080 提供其内容。

对于 Nginx,有一个代理传递配置:

location /my-application-name { proxy_pass http://my-application-name; }

正在添加以下 header :

proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;

...以便 Spring Boot 知道“原始”请求。

有人知道我做错了什么吗?执行器实现似乎没有考虑 HTTPS 协议(protocol)

最佳答案

我通过在配置类中添加此代码块解决了该问题:

@Bean
public FilterRegistrationBean forwardedHeaderFilterRegistration() {
ForwardedHeaderFilter filter = new ForwardedHeaderFilter();
FilterRegistrationBean<ForwardedHeaderFilter> registration = new FilterRegistrationBean<>(filter);
registration.setName("forwardedHeaderFilter");
registration.setOrder(10000);
return registration;
}

看起来 ForwardedHeaderFilter 确实考虑了 X-Forwarded-Proto header 。尽管目前还不清楚为什么执行器实现默认情况下不执行此操作(因为其他 X-Forwarded header 已得到正确处理)

关于spring-boot - Spring Boot 执行器页面返回 http 链接而不是 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52077013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com