切换DNS到Cloudflare后socket.io端口3002出现连接超时是什么原因?
问题原因
- Cloudflare 开启橙色云代理模式时仅支持转发特定端口的 HTTP/HTTPS 流量,3002 端口不在官方支持的端口列表中,发往该端口的请求会被 Cloudflare 直接拦截,无法到达源站,就会抛出
ERR_CONNECTION_TIMED_OUT错误。 - 切换 DNS 到 Cloudflare 后你的域名已经解析到 Cloudflare 代理节点,而非直接指向源站IP,如果前端 socket.io 还是通过
你的域名:3002方式发起连接,请求无法被 Cloudflare 转发,自然连接超时。 - 如果你的解析记录已经设置为灰色云(仅DNS解析,不经过Cloudflare代理)还是出现超时,需要额外检查源站服务器防火墙是否开放了3002端口,或是是否屏蔽了当前访问端的IP。
可选解决方案
- 调整 socket.io 服务监听端口为 Cloudflare 支持的端口,HTTPS 可选 443、2053、2083、2087、2096、8443,HTTP 可选 80、8080、8880、2052、2082、2086、2095,修改监听代码即可:
server.listen('8443', function(){ console.log('listening on port 8443'); });
- 单独为 socket.io 服务新增一条 DNS 解析记录,设置为灰色云仅解析模式,前端直接通过该子域名+3002端口连接即可,缺点是会暴露源站真实IP。
- 通过源站的 Nginx、Apache 等反向代理服务,将 socket.io 接口挂载到主站的子路径下(如
/socket.io),直接走主站的80/443端口通信,无需额外开放端口,兼容性最好。
内容的提问来源于stack exchange,提问作者user16643863
相关产品推荐
相关产品推荐

