使用 Nginx 作为反向代理在客户端和 nodejs 之间创建 websocket 时出现 400 错误请求

使用 Nginx 作为反向代理在客户端和 nodejs 之间创建 websocket 时出现 400 错误请求

我正在尝试使用 Nginx 作为反向代理并在后端使用 nodejs 来创建 websocket。我在 nodejs 中使用 ws 库。当我使用 wscat 工具测试它时,一切正常,但当我从浏览器发出请求时,我不断收到来自 Nginx 的 400:错误请求响应。我在互联网上找不到任何有错误的东西,nginx 和 nodejs 在一起(可能是我的错)。我完全按照教程

以下是我的节点配置-

console.log("Server started");
var Msg = '';
var WebSocketServer = require('ws').Server
    , wss = new WebSocketServer({port: 8010});
    wss.on('connection', function(ws) {
        ws.on('message', function(message) {
        console.log('Received from client: %s', message);
        ws.send('Server received from client: ' + message);
    });
 });

Nginx 配置

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

    upstream websocket {
        server 127.0.0.1:8010;
    }

    server {
        listen 8020;
        location / {
            proxy_pass http://websocket;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
        }
    }
}

然后我尝试使用 socket.io教程。但我不知道如何传递包含

var socket = io(); // 您的初始化代码在这里。

到浏览器,因为我只想让特定请求生成 Web 套接字。我甚至不明白它如何找到 socket.io.js,因为我没有找到提到的地方。

请帮忙。

相关内容