使用 CloudFlare 的 Nodejs SSL 无法通过 https 工作

Nodejs SSL using CloudFlare not working over https

所以我遇到的问题是,当 server.js 使用 https 时,客户端无法连接到 server.js。

如果我转到“https://mydomainame.com”,我会在所有其他浏览器的控制台中收到此错误,而不是 brave 浏览器 index.js:83 GET https://serverip:8081/socket.io/?EIO=3&transport=polling&t=NK0oCD6 net::ERR_CERT_AUTHORITY_INVALID

(涂黑的是服务器的IP地址) 奇怪的是,在勇敢的浏览器中,域更改为“http://mydomainame.com”,然后客户端连接到 server.js

我正在使用完全端到端加密的免费 Cloudflare

server.js代码:

var express = require('express'),
https = require('https');
var app = express();
var fs = require('fs');
var httpsOptions = { 
    key: fs.readFileSync('/var/www/ssl/sitename.com.key'),
    cert: fs.readFileSync('/var/www/ssl/sitename.com.pem')};
var server = https.createServer(httpsOptions,app);
var io = require('socket.io').listen(server);

const port = 8081;
server.listen(port);

和client.js连接码:

socket = io.connect('https://serverip:8081', {secure: true});

我为服务器和 nodejs 代码使用相同的源证书。 服务器使用带有 PHPMyAdmin 的 Apache2,并配置为使域仅使用 https。

我在某处读到 Cloudflare 无法使用除 443 和其他端口之外的其他端口,但我并不真正理解它,而且我无法让 server.js 在端口 443 上工作。

感谢您提供的任何信息或帮助! :)

所以我想通了,非常感谢 Eric Wong 指出了最大的问题,即我试图使用那里的 IP 连接到服务器,而不是通过 Cloudflare。

然后在这篇文章中识别与 Cloudflare 的代理兼容的网络端口 你可以看到 Cloudflare 允许连接的端口,我已经更改了我的代码。我使用了 https 端口 8443

socket = io.connect('https://domainname.com:8443',{secure: true});

然后我唯一要做的就是转发新端口,一切正常!