【问题标题】:Websockets with AWS and Elastic Beanstalk使用 AWS 和 Elastic Beanstalk 的 Websocket
【发布时间】:2015-02-10 17:16:09
【问题描述】:

我正在尝试让我的 websocket 与 Amazon Web Service 和 Elastic Beanstalk (ELB) 一起使用。

我根据以下设置代理协议: http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html

我已经在所有端口上为所有 IP 开放了到我的负载均衡器和其他安全组的所有入站流量。

我还将负载平衡器侦听器保留为端口 80 上的 HTTP。

尝试连接端口 80 时,我的 websocket 连接出现以下错误: 失败:WebSocket 握手期间出错:意外响应代码:400

端口 8080 上出现此错误: 失败:连接建立错误:net::ERR_CONNECTION_REFUSED

不胜感激,我被困在这一点上。

谢谢!

【问题讨论】:

  • 你找到解决办法了吗,我也遇到了同样的问题
  • 在使用 HTTP 侦听器进行设置时,Amazon 的弹性负载均衡器目前似乎不支持 Web 套接字。建议的解决方法是使用基于 TCP 的侦听器。请参阅上面的链接。
  • 您是否知道如果没有负载均衡器这是否可行?例如,只有一个实例的 EB 应用程序?
  • 然后用单个实例创建一个负载均衡器 ;)

标签: amazon-web-services websocket amazon-elb


【解决方案1】:

这是一篇非常古老的帖子,但在四处寻找答案后,我发现您需要做两件事才能在与 AWS EB 一起使用的自定义端口上获取 websocket。

  1. 在你的EB环境配置下。转到软件并在那里添加一个环境变量。确保这与您的代码匹配区分大小写。

  2. 再次在您的 EB 环境的配置下。转到负载均衡器并将自定义端口添加为侦听器。

确保将新的侦听器保存在配置下,并在重新加载时将 websocket 流量路由到自定义端口

【讨论】:

    【解决方案2】:

    您应该为 Nginx 服务器创建反向代理。您可以在 .ebextensions 文件夹中包含此 config file 以使 Nginx 支持 WS。

    此外,在 EBS 的负载平衡器配置中,将协议从 HTTP 更改为 TCP。

    请参阅此blog 以设置安全 WebSocket。

    【讨论】:

    • 我有一个带有 WebSocket 的 java 应用程序我该如何配置。
    【解决方案3】:

    AWS 推出了支持 Web 套接字的新应用程序负载均衡器。将您的 ELB 更改为 Application Load Balancer,这将解决您的问题。

    https://aws.amazon.com/blogs/aws/new-aws-application-load-balancer/

    【讨论】:

      【解决方案4】:

      配置 EC2 安全组后,您的应用程序将使用公共 IP。

      但是您仍然会遇到使用 EB URL 的问题。 要解决此问题,您必须更改 EB 配置。

      1. 转到 EB 环境页面
      2. 配置
      3. 在负载平衡部分将协议从 HTTP 更改为 TCP。

      现在您可以点击 EB URL。

      【讨论】:

      • 您是否知道如果没有负载均衡器这是否可行?例如,只有一个实例的 EB 应用程序?
      【解决方案5】:

      我也在寻找可能的解决方法来解决这个问题,但是无论您使用什么平台语言在 AWS EC2 上开发 websocket 程序,它都非常容易,就像在我的情况下使用 Node.js nginx 一样,这应该适用于所有人支持平台。

      配置安全组

      1. 在 AWS 控制台中,打开 EC2 选项卡。
      2. 选择相关区域并点击安全组。
      3. 你应该有一个 elasticbeanstalk-default 安全组,如果你 已在该区域为您启动了 Elastic Beanstalk 实例 应用程序。
      4. 点击顶部的操作按钮,然后选择编辑入站规则。
      5. 在此处类型列中选择所有 TCP,或者您可以设置一些自定义 TCP 规则以及监听你的 websocket 端口。

        就是这样!

      注意:如果出现问题,请检查 Beanstalk 应用程序/环境中的“事件”选项卡并找出问题所在。

      【讨论】:

        猜你喜欢
        • 2013-04-01
        • 2017-01-17
        • 2013-08-29
        • 2017-10-03
        • 2015-04-17
        • 2015-10-29
        • 2013-07-05
        • 2017-11-08
        • 2017-10-01
        相关资源
        最近更新 更多