nodejs koa-generator 项目(koa2),配置 https 来监听https请求
Nodejs koa2项目怎么 配置 https 来监听https请求呢?
前置情况:
# 使用 koa-generator 构建的nodejs项目。
# 项目部署到 腾讯云,CentOS 7.6。
# 安装 pm2
项目根目录,在 /bin/www 文件中已有代码:
var app = require('../app');
var debug = require('debug')('demo:server');
var http = require('http');
// (1)
var port = normalizePort(process.env.PORT || '3000');
var server = http.createServer(app.callback());
// (2)
server.listen(port, (err) => {
// 添加 http 监听反馈
if (err) {
console.log('http 服务启动出错', err);
} else {
console.log('http 服务器-server运行在 '+ port +' 端口');
}
});
server.on('error', onError);
server.on('listening', onListening);
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
return val;
}
if (port >= 0) {
return port;
}
return false;
}
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string' ?
'Pipe ' + port :
'Port ' + port;
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string' ?
'pipe ' + addr :
'port ' + addr.port;
debug('Listening on ' + bind);
}
在项目 /bin/www 文件中追加https服务:
1、项目中下载 https 、koa-sslify 资源包,是配置 https 服务的前提:
npm install https koa-sslify
2、在 /bin/www 中, (1) 处添加如下代码:
(添加https 服务需要有域名证书,获取证书的条件简单但繁琐,不是本次的主要内容,能看到这篇文章,说明你已经了解怎么获取了)
// https 服务需要的包
const fs = require('fs');
const https = require('https');
const sslify = require('koa-sslify').default;
// 路径为证书放置的位置
const options = {
key: fs.readFileSync('./cert/www.wffw88.top.key'),
cert: fs.readFileSync('./cert/www.wffw88.top_bundle.crt'),
}
app.use(sslify()); // 添加sslify
// 创建https服务 (避免影响其他项目443端口冲突,可变更端口,如444)
const httpsPort = {port: 444};
https.createServer(options, app.callback()).listen(httpsPort, (err) => {
if (err) {
console.log('https: 服务启动出错', err);
} else {
console.log('https: 服务器-server运行在 ' + httpsPort.port + ' 端口');
}
})
3、如果需要自动将 http 请求转向 https ,则在 /bin/www 中,(2) 处添加以下代码。不需要则不添加。
//将 http 请求自动重定向到 https
server.on('request', (request, res) => {
res.writeHead(301, { 'Location': 'https://xxxxx.com' });
res.end();
});
注意:
如果端口冲突,且不需要占用的程序,可关闭程序。
有问题反馈加微信:mue233
私聊问我
微信公众号:焦虑自愈教程,分享过去走出来的经验
52软件资源库 » nodejs koa-generator 项目(koa2),配置 https 来监听https请求
52软件资源库 » nodejs koa-generator 项目(koa2),配置 https 来监听https请求