You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:46:01