30

我正在尝试在 AWS Elastic Beanstalk 上使用 socket.io 设置 websocket-server。启动并运行了对 /socket.io/1/?t=xxxx 的初始请求,但 websocket 握手失败并出现以下错误:

WebSocket connection to 'ws://xxxxxx.elasticbeanstalk.com/socket.io/1/websocket/a4DTCN2BeJZuiSaphVyz' failed: Unexpected response code: 502 

从谷歌搜索并查看错误 502 (Bad Gateway) 似乎与 nginx-proxy 有关。那么如何配置 nginx 以使用 websockets 呢?

在 AWS 文档中找不到有关设置 websocket 的任何内容。

4

3 回答 3

28

您可以尝试通过配置nginx的麻烦,但如果您只使用websockets,关闭所有代理并直接连接会更容易。

这是在弹性 beantalk 仪表板中的应用程序环境下。右侧有一个下拉按钮,标记为“操作”。选择“编辑/加载配置”

在此处输入图像描述

于 2013-04-17T15:37:06.333 回答
4

ditch-nginx 方法有一个明显的缺点。您必须将 https 移至节点以及您的 socket.io 调用。在服务器配置中而不是在节点中管理 https 要容易得多。

如果您不需要 https,我建议转储代理并直接转到节点。

于 2015-11-29T02:25:49.623 回答
4

Socket.io 默认使用端口 8080。通过在 AWS 管理 > EC2 > 安全组中添加“入站 > 自定义 TCP 规则”,确保在您的 EC2 安全组上启用端口 8080。

于 2016-08-24T20:20:34.603 回答