Socket.io无法在Node.js前面使用Nginx反向代理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Socket.io无法在Node.js前面使用Nginx反向代理相关的知识,希望对你有一定的参考价值。

我的节点应用程序在端口3000上运行。然后我使用nginx作为反向代理来为我的域的SSL提供应用程序:

server {
        listen 443 ssl;

        ssl_certificate /etc/nginx/ssl/server.chain.crt;
        ssl_certificate_key /etc/nginx/ssl/server.key;

        server_name example.com;

        location / {
                proxy_pass http://localhost:3000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
    }
}

我使用以下行在客户端初始化我的套接字:

var socket = io.connect('https://example.com/');

在服务器端使用此行:

var io = socket_io()
app.io = io

但是当我启动我的应用程序时,我有这个错误:

WebSocket connection to 'wss://example.com/socket.io/?EIO=3&transport=websocket&sid=jVNRhDOYJD20l9U-AAAA' failed: Error during WebSocket handshake: Unexpected response code: 502

你知道如何解决这个错误吗?

答案

本文介绍如何在Kaazing WebSocket服务器前使用nginx作为rev-proxy。

https://kaazing.com/kaazing-and-nginx-the-best-of-both-worlds/

本文中描述的配置可能与使用NodeJS作为服务器非常相似。希望能帮助到你。

以上是关于Socket.io无法在Node.js前面使用Nginx反向代理的主要内容,如果未能解决你的问题,请参考以下文章

Socket.io 无法在 nginx + node.js + php 应用程序中连接

无法从Win Forms C#app连接到远程Node.js Socket.IO服务器

Node.js socket.io.js 未找到或 io 未定义

无法创建到 Node.js socket.io 服务器的跨域 websocket 连接

简单的游戏循环 Socket.io + Node.js + Express

Node.JS、Socket.IO 和集群中的 WebSocket 握手不起作用