NodeJS Cloudflare 522错误- javascript客户端连接到节点服务器

68de4m5k  于 2023-02-03  发布在  Node.js
关注(0)|答案(1)|浏览(155)
    • bounty将在5天后过期**。回答此问题可获得+300声望奖励。Arivan Bastos希望引起更多人关注此问题。

我尝试从apache Web服务器托管的javascript客户端连接到nodejs https服务器,收到"522-加载响应数据失败:找不到具有给定标识符的资源的数据"错误。apache Web服务器与节点服务器运行在同一域/服务器上,并且服务器由Cloudflare代理:

这两个服务运行在同一台服务器/机器上。这是我如何启动nodejs服务器的:

// Certificates are the same used by apache web server in Virtual Host 
// and were got from Cloud Flare Panel > SSL/TLS > Origin Server
var options = {
  key: fs.readFileSync('/etc/cloudflare/example.com.key'),
  cert: fs.readFileSync('/etc/cloudflare/example.com.pem'),
};

var socket = require('socket.io');
var http = require('https');

// Port 2053 was listed as a https port supported by Cloud Flare in
// https://developers.cloudflare.com/fundamentals/get-started/reference/network-ports/
var argv = require('optimist')
    .usage('Usage: --port [num]')
    .default({port: 2053})
    .argv;

var server = http.createServer(options, function(req, res) {
});

server.listen(argv.port);

var io = socket.listen(server);

下面是我从JavaScript客户端连接到nodejs服务器的方法:

let socket = io.connect("https://www.example.com:2053", {secure: true});

有什么建议吗?

    • Edit 1**如果我将节点服务器创建为http(而不是https),它将工作。
but5z9lq

but5z9lq1#

我可以通过执行以下操作连接到节点服务器:
1.示例化https节点服务器时设置“key”和“cert”选项:这些文件可以在云耀斑面板〉选择您的域〉SSL/TLS〉源服务器中生成。2不需要“ca”、“requestCert”或“rejectUnauthorized”参数。
1.使用节点服务器中https://developers.cloudflare.com/fundamentals/get-started/reference/network-ports/中列出的端口之一。Cloud Flare会自动将这些端口重定向到源服务器中的同一个端口
1.允许源服务器防火墙中选定端口(步骤2)上的入站连接
1.在Cloud Flare Panel〉选择您的域〉SSL/TLS〉概述中将SSL设置设置为FULL

相关问题