node.js - Socket.io 无法与 nginx 和 https 一起使用

标签 node.js nginx socket.io

我有一个 React 应用程序与一个非常简单的 Node 后端通信,它在本地工作得很好,并且通过 http 工作得很好。出于明显的原因,应用程序现在在 https 中运行,但套接字不再连接。我一直在寻找很多线程,但找不到修复它的方法。这是我的代码和 nginx conf 的套接字部分。

客户端:

const socket = io('wss://sub.domain.io', { path: '/my-path',});

服务器端:

const server = require('http').createServer();

const io = require('socket.io')(server, {
    path: '/my-path',
    serveClient: false
});

server.listen(8080);

nginx 代理

server {
      ....website serving part...

      location /my-path/ {
        proxy_pass http://localhost:8080;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    }
 }

错误是: GET https://sub.domain.io/my-path/?EIO=3&transport=polling&t=MsCot3e net::ERR_CONNECTION_TIMED_OUT VM17:1 看起来像是超时,因为它连接失败。

最佳答案

所以我在几个小时后找到了答案,它非常愚蠢和简单。我的 Nginx 只处理 www 网站(DNS 重定向足以满足网站需求),因此我需要 www.sub.domain.io :

const socket = io('wss://www.sub.domain.io', { path: '/my-path',});

关于node.js - Socket.io 无法与 nginx 和 https 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58202875/

相关文章:

node.js - 在 nodejs 中跟踪哪些用户在线的最佳方法是什么?

node.js - 如何安全地将 Drupal 连接到 Nodejs socket.io

node.js - 读取和写入 Firestore 的 Firebase 函数会抛出 ReferenceError : query is not defined at cors and Unhandled rejection

node.js - Amazon EC2 上的 HTTPS Node.js 服务器不工作

ssl - Application Load Balancer + Nginx http 到 https 重定向给出 502 Bad Gateway

reactjs - Nginx 反向代理多个 React 应用

javascript - 检索 io.socket 中的所有套接字对象

node.js - 如何为RESTlet构建OAuth授权 header ?

go - goapp systemd nginx之间的上游超时

node.js - 如何在 aws lambda 函数中使用 Socket.io