【问题标题】:how to enable WebSocket with nginx on AWS Elastic Beanstalk server?如何在 AWS Elastic Beanstalk 服务器上使用 nginx 启用 WebSocket?
【发布时间】: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 服务器。

谢谢

【问题讨论】:

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


【解决方案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>>;
}
  1. 如果您使用的是弹性负载平衡器,请在弹性负载平衡器中启用 TCP 模式负载平衡。

【讨论】:

    【解决方案2】:

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

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

    如果您想启用套接字,则需要它,例如对于 node.js socket.io。完整教程可以在here找到。 抱歉链接,但这是一个相当广泛的话题。如果您从头开始,您可能需要分步指南。

    希望对你有帮助。

    【讨论】:

    • 您会在解决方案中解决问题中的版本注意事项(1.3.13 v. 1.2.x)吗?
    猜你喜欢
    • 2020-10-30
    • 2019-05-08
    • 2015-02-10
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 2015-11-27
    相关资源
    最近更新 更多