gpt4 book ai didi

Spring Boot & ELB - 如何让负载均衡器将 http 重定向到 https?

转载 作者:行者123 更新时间:2023-12-01 15:35:55 24 4
gpt4 key购买 nike

我已经通过 Elastic Beanstalk 部署了一个 Spring Boot 应用程序。我正在使用负载均衡器,所以这是流程(据我所知):

互联网/浏览器请求 ---HTTPS---> 负载均衡器 ---HTTP---> Spring Boot 应用服务器

所以本质上,SSL 在负载均衡器处终止,应用服务器只处理普通的旧 HTTP。

但是在来自浏览器的 HTTP 请求的情况下,我希望负载平衡器自动重定向到 HTTPS。

这个问题有几个问题:

Spring Boot with Embedded Tomcat behind AWS ELB - HTTPS redirect
How to redirect automatically to https with Spring Boot
Spring Boot redirect HTTP to HTTPS

但是这些问题的答案对我来说都没有意义。也许我误解了,但所有的答案基本上都使 Spring Boot 应用程序仅服务器 HTTPS 请求(例如使用 http.requiresChannel().anyRequest().requiresSecure() 时)。

但是,这与流程背道而驰,因为我完全同意 SSL 在负载均衡器处终止,而 Spring Boot 应用服务器仅处理 HTTP。因此,如果我在 spring boot 级别需要 SSL,那么我将需要进行端到端 SSL 连接,这对我的应用程序来说并不是真正需要的。

我还使用了以下属性,它们似乎也无济于事:

server.tomcat.remote-ip-header=x-forwarded-for
server.tomcat.protocol-header=x-forwarded-proto

最佳答案

借助这个article ,我终于能够弄清楚如何在 ELB 环境中为 Spring Boot 应用程序执行此操作。

我必须在 src/main/webapp/.ebextensions/nginx/conf.d 中创建一个 conf 文件。我只是将其命名为 myconf.conf。

myconf.conf 中,我将这段代码放在:

server {
listen 80;
server_name www.my-site.com;
if ($http_x_forwarded_proto != "https") {
rewrite ^(.*)$ https://$server_name$REQUEST_URI permanent;
}
}

此外,请确保 HTTP 和 HTTPS 监听器均已为负载均衡器打开。
此外,我的 spring boot 应用程序只打开 HTTP,因为负载均衡器已经终止了 SSL。

关于Spring Boot & ELB - 如何让负载均衡器将 http 重定向到 https?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47982175/

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