如何在AWS Elastic Beanstalk服务器上使用nginx启用WebSocket?

5
我在 AWS Beanstalk 服务器上部署了一个 Node.js 应用程序,并想要使用基于 WebSocket 协议的 socket.io 功能。我知道有一个讨论 (在这里) 直接连接到 Node.js 服务器而不是使用 nginx 作为代理服务器。但如果我仍然希望使用 nginx 作为代理服务器,因为它提供了额外的功能,如静态文件等。

我发现 nginx 1.3.13 已经支持WebSocket 代理,而 AWS Elastic Beanstalk 似乎仍在使用 1.2.x 版本的 nginx。

所以我想知道是否有任何方法可以升级 Beanstalk 下的 nginx 版本,以及如何启用 WebSocket 代理到 Node.js 服务器。

谢谢


升级nginx版本,您可以使用配置文件。在升级nginx版本后,您应该仔细检查从EB传递的参数。 - study
你有更新nginx的示例吗? - KBeckers
如果您正在使用弹性 Beanstalk,请查看此内容。https://stackoverflow.com/questions/47584103/socket-io-in-aws-elasticbeanstalk-node - coolboyjules
2个回答

0
我们使用 Elastic Beanstalk 配合多个 Docker 容器(允许您自定义 Nginx 版本)进行编程,具体如下:
1. Nginx 配置
location /ws/ 
{
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
  proxy_pass http://unix:/<<socket>>;
}

如果您正在使用弹性负载均衡器,请启用TCP模式负载均衡。

0

您需要启用额外的模块,这可以在编译nginx时完成。 为此,您需要将以下行添加到配置脚本中。

--add-module=/root/nginx_patched/nginx_tcp_proxy_module

如果您希望启用套接字(例如,用于 node.js socket.io),则需要执行此操作。完整的教程可以在此处找到。

抱歉只提供链接,因为这是一个相当广泛的主题。如果您从头开始,请参考逐步指南。

希望能够帮助到您。


你的解决方案中是否考虑了版本问题(1.3.13 v. 1.2.x)?请说明。 - Tim James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接