我在Elastic Bean stalk中有一个节点js应用程序。我们正在考虑使用socket io来实现一个功能。
我在某些地方读过,必须在AWS elasticbeanstalk中手动启用套接字io支持。特别是当它使用默认的NGINX代理时。
我读过默认情况下,弹性beanstalk实例前面有一个nginx代理,它没有配置为允许webSockets。
这是正确的信息吗?如果是,如何在AWS EB中启用socket io支持?
答案 0 :(得分:2)
这是正确的信息。您需要为Elastic Beanstalk部署执行一些其他配置,以使WebSockets(Socket.io或其他)工作。
创建Elastic Beanstalk环境后,您需要配置负载均衡器以接受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
升级状态代码。