Cloudflare 522错误:Apache托管JS客户端连接Node.js HTTPS服务器失败
解决建议
验证Cloudflare端口与防火墙规则
确认Cloudflare账户的网络设置中,2053端口已被允许作为HTTPS端口;同时检查Cloudflare防火墙规则,是否误拦截了该端口的入站流量。完善证书配置
- 确保Node.js进程对证书和密钥文件有读取权限,路径配置无错误;
- 在HTTPS选项中添加Cloudflare根证书链,避免证书信任问题:
var options = { key: fs.readFileSync('/etc/cloudflare/example.com.key'), cert: fs.readFileSync('/etc/cloudflare/example.com.pem'), ca: fs.readFileSync('/etc/cloudflare/cloudflare-root-ca.pem') // 需下载对应根证书文件 };
匹配Cloudflare SSL模式
检查Cloudflare的SSL/TLS设置:- 若设置为「严格」模式,需确保Node.js使用的Cloudflare源服务器证书完整有效;
- 避免使用「灵活」模式(该模式下Cloudflare到源服务器为HTTP,与你当前的HTTPS Node服务冲突),建议切换为「严格」或「完整」模式。
本地测试HTTPS服务
在服务器本地执行curl -v https://localhost:2053,验证Node.js的HTTPS服务是否能正常响应。如果本地连接失败,优先修复Node.js的证书或服务配置问题。优化Socket.IO连接配置
客户端连接时显式指定传输方式,减少协议兼容问题:let socket = io.connect("https://www.example.com:2053", { secure: true, transports: ['websocket', 'polling'] });服务器端添加连接日志,确认是否有客户端请求到达:
io.on('connection', (socket) => { console.log('客户端已连接:', socket.id); });排查端口占用
执行netstat -tulpn | grep 2053,确认2053端口未被Apache或其他进程占用。
内容的提问来源于stack exchange,提问作者Arivan Bastos
相关产品推荐
相关产品推荐

