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

时间:2013-11-07 12:25:04

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

我在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版本以及如何启用到nodejs服务器的WebSocket代理。

由于

2 个答案:

答案 0 :(得分:0)

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

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

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

希望它有所帮助。

答案 1 :(得分:0)

我们使用弹性beanstalk与多个docker容器(允许您自定义nginx版本)以及

1.Nginx config

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模式负载均衡。