Chi*_* V2 3 https ssl-certificate node.js socket.io cloudflare
所以我遇到的问题是,当 server.js 使用 https 时,客户端将无法与 server.js 连接。
如果我转到“https://mydomainame.com”,除了勇敢的浏览器之外,我会在所有其他浏览器的控制台中收到此错误 index.js:83 GET https://serverip:8081/socket.io/?EIO=3&transport=轮询&t=NK0oCD6 net::ERR_CERT_AUTHORITY_INVALID

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

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);
Run Code Online (Sandbox Code Playgroud)
和client.js连接代码:
socket = io.connect('https://serverip:8081', {secure: true});
Run Code Online (Sandbox Code Playgroud)
我对服务器和 nodejs 代码使用相同的原始证书。服务器使用 Apache2 和 PHPMyAdmin,并配置为使域仅使用 https 工作。
我在某处读到 Cloudflare 无法使用 443 以外的其他端口和其他端口,但我并没有真正理解它,而且我无法让 server.js 在端口 443 上工作。
我很感谢我能得到的任何信息或帮助!:)
所以我想通了,非常感谢 Eric Wong 指出了我尝试使用其 IP 连接到服务器时未通过 Cloudflare 的最大问题。
然后在这篇文章“识别与 Cloudflare 代理兼容的网络端口” 中,您可以看到 Cloudflare 允许连接哪些端口,然后,我更改了代码以使用 https 端口 8443。
socket = io.connect('https://domainname.com:8443',{secure: true});
Run Code Online (Sandbox Code Playgroud)
然后我唯一要做的就是转发新端口,一切正常!
| 归档时间: |
|
| 查看次数: |
5322 次 |
| 最近记录: |