使用AWS Application Load Balancer的Websocket超时

在尝试使用Elastic Beanstalk环境中的应用程序负载均衡器专门为websockets使用端口时,会出现网关超时。

Web应用程序和websocket服务器被保存在一个Docker容器中,应用程序运行正常,但是wss://domain.com:8080只会超时。

这里是负载均衡器监听器,使用SSL证书的wss。 应用程序负载平衡器监听器

它指向的目标组是接受HTTP协议(我试过HTTPS),并转发到8080到EC2实例。 或者..应该是。 (似乎不是应用程序负载平衡器上的TCP选项)。

我查看了应用程序负载均衡器日志,它看起来像到达目标组,但超时了它与EC2实例的连接,并且我很难理解为什么。

所有AWS安全组目前已经在所有stream量上打开,我已经检查了主机,发现端口已打开并正在被Nginx监听,该端口将路由到正确的端口到docker容器: EC2主机实例打开端口

docker ps也给我看: 码头工人

一旦进入容器,我可以看到Websocket服务器正在监听端口: 在这里输入图像说明

所以它不可能是EC2实例本身,可以吗? 在ALB中通过端口路由websockets是否存在问题?

– 编辑 –

ALB当前SG:

ALB

EC2实例SG: EC2

Websockets需要双向通信,确保连接到所有资源(EC2和ALB)的安全组允许在所需端口上进行入站和出站通信。