如何在 AWS Elastic Beanstalk 服务器上使用 nginx 启用 WebSocket?
Posted
技术标签:
【中文标题】如何在 AWS Elastic Beanstalk 服务器上使用 nginx 启用 WebSocket?【英文标题】:how to enable WebSocket with nginx on AWS Elastic Beanstalk server? 【发布时间】:2013-11-19 02:17:22 【问题描述】:我在 aws beanstalk 服务器上部署了一个 nodejs 应用程序,并希望使用基于 WebSocket 协议的 socket.io 功能。我知道有一个讨论 here 直接连接到 nodejs 服务器而不是使用 nginx 作为代理服务器。但是如果因为 nginx 提供的额外功能,比如静态文件,...等,我仍然想将 nginx 作为代理服务器。
我发现它已经在 nginx 1.3.13 上支持 WebSocket proxying,我发现 aws elastic-beanstalk 似乎仍在使用 1.2.x nginx。
所以我想知道是否有任何方法可以升级 beanstalk 下的 nginx 版本以及如何启用 WebSocket 代理到 nodejs 服务器。
谢谢
【问题讨论】:
升级nginx版本可以使用Configuration File。升级 nginx 版本后,您应该仔细检查从 EB 传递的参数。 有更新nginx的例子吗? 如果您使用的是弹性豆茎,请检查一下。 ***.com/questions/47584103/… 【参考方案1】:我们使用弹性 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 模式负载平衡。
【讨论】:
【参考方案2】:您需要启用额外的模块,这可以在 nginx 编译期间完成。 为此,您需要在配置脚本中添加以下行。
--add-module=/root/nginx_patched/nginx_tcp_proxy_module
如果您想启用套接字,则需要它,例如对于 node.js socket.io。完整教程可以在here找到。 抱歉链接,但这是一个相当广泛的话题。如果您从头开始,您可能需要分步指南。
希望对你有帮助。
【讨论】:
您会在解决方案中解决问题中的版本注意事项(1.3.13 v. 1.2.x)吗?以上是关于如何在 AWS Elastic Beanstalk 服务器上使用 nginx 启用 WebSocket?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AWS Elastic Beanstalk 上修改 Nginx 配置
如何在 AWS Elastic Beanstalk 上设置 HTTPS
如何在 AWS Elastic Beanstalk 上设置 HTTPS
如何在 AWS Elastic Beanstalk 中更改数据库配置