2

在EC2实例上运行Spring引导应用程序端口8080。带有嵌入式Tomcat的Spring Boot在AWS ELB之后 - HTTPS重定向

AWS ELB配置为重定向

 80 -> 8080 
    443 (SSL termination happens here) -> 8080 

应用使用Spring的安全,如果你的用户到达http://example.com它会重定向到。我想登录页面来使用SSL。

春季安全片段:

http.requiresChannel().antMatchers("/login", "/logout").requiresSecure(); 

我们正在运行到重定向循环这是有道理的。

春天启动应用程序,它看起来像所有的请求都作出非安全端口8080,它重定向到https://example.com,经过ELB,并再次获得8080

有关如何使用AWS ELB运行任何想法请求???

回答

2

您将必须instantiate your own EmbeddedServletContainerFactory并将此容器的连接器上的secure属性设置为true。之后,您的Ant匹配器规则将起作用。

或者,你可以检查出在Github上可用的Spring Boot source code,添加代码读取称为server.channel.secure布尔值的配置属性,将其设置嵌入式的Tomcat连接器上,并提交了Spring团队将其纳入下一个版本pull请求。

+0

感谢您指出了安全性能..貌似很简单的方法来设置它。我上面发布了答案。 – vladsfl

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); 
     } 
    }); 

} 

}

相关问题