- bounty将在5天后过期**。回答此问题可获得+300声望奖励。Arivan Bastos希望引起更多人关注此问题。
我尝试从apache Web服务器托管的javascript客户端连接到nodejs https服务器,收到"522-加载响应数据失败:找不到具有给定标识符的资源的数据"错误。apache Web服务器与节点服务器运行在同一域/服务器上,并且服务器由Cloudflare代理:
- 客户端应用程序:https://www.example.com(端口443上的Apache Web服务器)
- 节点服务器:https://www.example.com:2053
这两个服务运行在同一台服务器/机器上。这是我如何启动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),它将工作。
1条答案
按热度按时间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