在EC2实例上运行Spring引导应用程序端口8080。
AWS ELB配置为重定向
80 -> 8080
443 (SSL termination happens here) -> 8080
应用程序使用Spring Security,如果用户到达http://example.com,它将重定向到。我想登录页面使用SSL。
Spring security snippet:
http.requiresChannel().antMatchers("/login", "/logout").requiresSecure();
我们正在进入重定向循环,这是有道理的。
对于Spring Boot应用程序,看起来所有请求都发送到非安全端口8080,它重定向到https://example.com,通过ELB再次获取请求8080
有关如何使用AWS ELB运行此功能的任何想法
答案 0 :(得分:3)
看起来这样做了诀窍:
@Component
public class TomcatCustomizer implements EmbeddedServletContainerCustomizer {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
tomcat.addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
connector.setSecure(true);
}
});
}
}
答案 1 :(得分:2)
您必须instantiate your own EmbeddedServletContainerFactory
并将此容器的连接器上的secure
属性设置为true
。之后,您的Ant匹配器规则将起作用。
或者,您可以查看Github上可用的Spring Boot source code,添加用于读取名为server.channel.secure
的布尔配置属性的代码,在嵌入式Tomcat连接器上设置它并为Spring团队提交拉取请求纳入下一版本。