Nginx + Socket.io + 代理

Nginx + Socket.io + 代理

阅读了几篇文章后,我仍然无法通过 nginx 代理使我的 socket.io 通信正常工作。

以下是我的nginx配置:

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

location ~* \.io {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
}

以下是我的node.js快速服务器的连接方式:

const express = require('express');
const app = express();
const http = require('http').Server(app);
const io = require('socket.io')(http);

在我的本地开发机器上,一切似乎都运行良好。我看到了我的 onConnection 日志消息,并且所有通信也运行良好。

无论如何,在生产过程中,我的浏览器得到了所有有效响应,但我没有看到任何 onConnection 日志,并且套接字上的通信不起作用。

Chrome 网络标签请求(点击以全尺寸打开图片)

Chrome 网络标签页请求

答案1

可能是生产服务器上的防火墙阻止了端口 3000。你可以在本地开发机器上运行以下命令来检查端口是否打开

telnet <ip-address-of-your-production-server> 3000

这将尝试打开与生产服务器上的端口 3000 的连接。如果超时或被拒绝,则表示端口未打开。

相关内容