node.js - websocket 无法在 ec2 上与 nginx 连接

标签 node.js nginx amazon-ec2 socket.io

我在 EC2 上运行 node.js 和 socket.io,使用 nginx v1.4.1

这是我的/etc/nginx/sites-available/default

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}


server {
        listen 80;

        server_name mysite.com;

        location / {
                proxy_pass http://localhost:4321;
                proxy_set_header Host $http_host;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
        }
}

但是我得到 与“ws://mysite.com/socket.io/1/websocket/nS7f2eI5jAZ-pIN_8fai”的 WebSocket 连接失败:意外响应代码:502

从 Node :

debug - setting request GET /socket.io/1/websocket/nS7f2eI5jAZ-pIN_8fai
debug - set heartbeat interval for client nS7f2eI5jAZ-pIN_8fai
warn  - websocket connection invalid

然后它切换到 xhr-polling。

网上有那么多关于Nginx + websocket的指南,我已经完全按照了,但我不知道我哪里错了。

最佳答案

根据 Nginx documentation ,您可以在 nginx 配置文件中尝试以下操作。

   location /wsapp/ {
        proxy_pass                           http://your-host:your-port/;
        proxy_http_version                   1.1;
        proxy_set_header                     Upgrade $http_upgrade;
        proxy_set_header                     Connection "Upgrade";
        proxy_set_header                     Host $host;
   }

关于node.js - websocket 无法在 ec2 上与 nginx 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18336611/

相关文章:

javascript - Mongoose 使用方法将模式添加到模式中

nginx - 旧 SSL 证书在续订后仍在使用

nginx - 更改index.html nginx kubernetes部署

linux - 如何从亚马逊EC2实例下载网站文件和数据库?

c++ - 在 macOS High Sierra 上使用 node-gyp 动态链接 wfdb 库时未加载符号

javascript - 与 EJS 和 - 不是这样 - "local"变量的范围作斗争

php - 如何配置 NGINX + PHP5-FPM 为特定 IP 范围保留连接插槽?

ubuntu - 有 0 个数据节点正在运行,并且没有节点被排除在此操作中

design-patterns - 您可以使用键值存储作为应用程序的主数据库吗?

node.js - 如何在 GraphQL 解析器中设置(数据库或其他)上下文?