我已经通过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请求(例如,在使用
互联网/浏览器请求 ---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