阅读了几篇文章后,我仍然无法通过 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 网络标签请求(点击以全尺寸打开图片)
答案1
可能是生产服务器上的防火墙阻止了端口 3000。你可以在本地开发机器上运行以下命令来检查端口是否打开
telnet <ip-address-of-your-production-server> 3000
这将尝试打开与生产服务器上的端口 3000 的连接。如果超时或被拒绝,则表示端口未打开。