AWS ElasticBeanStalk节点中的套接字Io

时间:2017-11-30 23:05:19

标签: node.js sockets amazon-web-services nginx elastic-beanstalk

我在Elastic Bean stalk中有一个节点js应用程序。我们正在考虑使用socket io来实现一个功能。

我在某些地方读过,必须在AWS elasticbeanstalk中手动启用套接字io支持。特别是当它使用默认的NGINX代理时。

我读过默认情况下,弹性beanstalk实例前面有一个nginx代理,它没有配置为允许webSockets。

这是正确的信息吗?如果是,如何在AWS EB中启用socket io支持?

1 个答案:

答案 0 :(得分:2)

这是正确的信息。您需要为Elastic Beanstalk部署执行一些其他配置,以使WebSockets(Socket.io或其他)工作。

创建Elastic Beanstalk环境后,您需要配置负载均衡器以接受TCP连接,并将配置文件添加到节点项目的根目录:

配置负载均衡器:

  • 转到EC2控制台并选择Load Balancers选项卡
  • 从中选择属于ELB环境的负载均衡器 清单
  • 选择“监听器”选项卡
  • 将默认条目“实例协议”更改为“TCP

添加配置文件:

  • 在节点项目的根目录中,创建一个名为的文件夹 POSTGRES_USER=custom

在新的.ebextensions文件夹中创建一个名为enable-websockets.config的文件,其中包含以下内容:

.ebextensions

此文件告诉NGINX反向代理如何处理WebSockets与应用程序服务器通信所需的container_commands: enable_websockets: command: | sed -i '/\s*proxy_set_header\s*Connection/c \ proxy_set_header Upgrade $http_upgrade;\ proxy_set_header Connection "upgrade";\ proxy_pass_request_headers on;\ ' /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf 升级状态代码。