AWS Application Load Balancer上的Spring Web套接字无法正常工作

时间:2017-06-19 09:50:05

标签: spring amazon-web-services elastic-load-balancer

我已经配置了带有网络套接字的弹簧,包括后端的兔子mq,我可以确认我可以将推送消息发送到浏览器。

在前端使用SockJS。

到目前为止,我一直在使用经典的负载均衡器。 我正在尝试让Web套接字在AWS上运行。我已升级到Application Load Balancer但在尝试建立Web套接字连接时仍然收到Bad Request响应:

  

WS://XXXX.eu-west-1.elasticbeanstalk.com/spring/hello/870/sbmdv5tn/websocket

该呼叫仍然提供400 Bad Request响应......

我看到了

  

由于升级标头无效,握手失败:null

后端的错误......

1 个答案:

答案 0 :(得分:0)

必须执行以下事实:请求连接升级,并且这些升级请求“按跳”发生。

在我的场景中,我在tomcat前面运行apache,为了让tomcat接收这些升级头,我需要在apache代理上启用web套接字隧道,这样apache就会简单地通过升级请求。

更新: 虽然更好的解决方案是完全绕过apache并直接进入tomcat - 这是配置负载均衡器路由到端口8080而不是端口80.我怀疑弹性beanstalk默认不这样做的原因因为它需要负载均衡器 - 如果您只想要单个实例,则不需要负载均衡器。