WebSockets:通过ELB从客户端到Amazon AWS EC2实例

我如何通过ELB将ssl连接到由亚马逊AWS EC2实例上的GlassFish提供的websocket?

我在GlassFish 4.1 b13预发布中使用Tyrus 1.8.1作为我的websocket实现。

端口8080不安全,端口8181用ssl进行安全保护。

  • ELB DNS名称:elb.xyz.com
  • EC2 DNS名称:ec2.xyz.com
  • websocket路径:/ web / socket
  • 我已经成功地使用ws&wss直接连接到我的EC2实例(绕过我的ELB)。 即以下两个网址都有效:

  • WS://ec2.xyz.com:8080 /网络/插座
  • WSS://ec2.xyz.com:8181 /网络/插座
  • 我通过使用tcp 80> tcp 8080侦听器成功地在我的ELB上使用了ws(非ssl)。 即以下网址的作品:

  • WS://elb.xyz.com:80 /网络/插座
  • 然而,我还没有找到通过我的ELB使用wss的方法。

    我尝试了很多东西。

    我假设通过我的ELB获取wss的最可能方法是在启用代理协议的ELB上创建一个tcp 8181> tcp 8181侦听器,并使用以下url:

  • WSS://elb.xyz.com:8181 /网络/插座
  • 不幸的是,这是行不通的。 我想我可能必须在glassfish上启用代理协议,但我一直无法知道如何做到这一点(或者如果有可能,或者需要wss来处理我的ELB)。

    另一个选择可能是以某种方式使ws或wss运行在ELB上终止的ssl连接,并通过使用ssl> tcp 8080监听器使其继续对glassfish不安全。 这对我也不起作用,但也许有些设置是不正确的。

    有没有人有任何修改我的两个上述审判。 还是有人有其他建议?

    谢谢。


    我有一个类似的设置,最初配置我的ELB侦听器如下:

  • HTTP 80 HTTP 80
  • HTTPS 443 HTTPS 443
  • 虽然这对网站本身运行良好,但websocket连接失败。 在监听器中,您需要允许所有安全的TCP连接,而不仅限于SSL,以允许wss通过:

  • HTTP 80 HTTP 80
  • SSL(安全TCP)443 SSL(安全TCP)443
  • 我也建议提高ELB的空闲超时。


    我最近在浏览器和EC2 Node.js实例之间启用了wss。 有两件事需要考虑:

  • 在ELB监听器选项卡中,使用SSL作为负载均衡器协议为wss端口添加一行。
  • 在ELB描述选项卡中,设置较高的空闲超时(连接设置),默认为60秒。 ELB在1分钟后终止了WebSocket连接,将空闲超时设置为3600(最大值)可以实现更长的通信时间。
  • 这显然不是最终的解决方案,因为超时仍然存在,但是1小时对于我们通常所做的事情可能足够好。

    希望这个帮助

    链接地址: http://www.djcxy.com/p/87163.html

    上一篇: WebSockets: wss from client to Amazon AWS EC2 instance through ELB

    下一篇: Websocket Load Balancing on AWS EC2