node.js - Nodejs https结合cpanel
问题描述
我试图让 https 在我的 nodejs 服务器上工作,如下所示:
var http = require('http');
var https = require('https');
var fs = require('fs');
var express = require('express');
var privateKey = fs.readFileSync('server.key', 'utf8');
var certificate = fs.readFileSync('server.crt', 'utf8');
var credentials = {key: privateKey, cert: certificate};
var app = express();
var httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app);
httpServer.listen(8080, ()=> {
console.log('Server started and listening on port 8080...')
});
httpsServer.listen(8443, ()=>{
console.log('Server started and listening on port 8443...')
});
当我运行服务器时,只有 http url 有效,https 超时。知道为什么会这样吗?
我习惯于使用 cpanel,所以我已经在那里设置了 ssl 证书,但是当涉及到节点时,我正在碰壁。
解决方案
您的 ssl 文件似乎有问题,您需要在创建 https 服务器时提供证书文件和私钥,如下所示:
var express = require('express');
var https = require('https');
var http = require('http');
var fs = require('fs');
// This line is from the Node.js HTTPS documentation.
var options = {
key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
cert: fs.readFileSync('test/fixtures/keys/agent2-cert.cert')
};
// Create a service (the app object is just a callback).
var app = express();
// Create an HTTP service.
http.createServer(app).listen(80);
// Create an HTTPS service identical to the HTTP service.
https.createServer(options, app).listen(443);
希望能帮助到你。
推荐阅读
- python - 无法用folium绘制地图
- python - import pyttsx3 as engine 和 engine = pyttsx3.init() 有什么区别?
- c# - C# 使用静态方法并传入数据库读取器
- asp.net-core - 在 C# 中使用 Microsoft Graph api 如何使用 azure Ad 身份验证在我的应用程序中获取当前登录用户(活动会话)的列表
- c - 指针设置为 NULL 但不在调试器中
- python - 如何使用 tkinter 实现监听器?
- flutter - Flutter Listview.Separated 在列表的开头和结尾添加分隔符
- sql - 在多个不相关表中的多个字段之间应用 COALESCE
- javascript - 如何将 postgres 查询分配给 node.js、Discord bot 和 postgres 集成中的变量?
- python - Python 安装旧版本的 matplotlib 导致 freetype 和 png 错误