2018-06-28 | UNLOCK

Koa搭建Https服务器

基于 nodejs 的koa框架搭建 https 服务器,SSL证书是腾讯云上的 xxx 机构(忘了)颁发的。

1、证书下载

登陆腾讯云,下载对应的SSL证书。目录结构如下:

我们需要的是以.crt.key为后缀的文件。

仔细观察会发现,Nginx下的crt文件是Apache下的两个crt文件合成的。当然,也可以通过以下命令将Apache下的两个crt文件衔接

1
cat 1_root_bundle.crt 2_theldyy.com.crt > 1_theldyy.com_bundle.crt

为了方便使用,重命名相关文件:

1
2
3
cd Nginx/
mv 1_theldyy.com_bundle.crt server.crt && mv 2_theldyy.com.key server.key
ls

2、安装和使用

首先安装koa-sslify:

1
2
npm install koa-sslify --save
cnpm install koa-sslify --save # 国内用户

结合koa-sslify官方文档,在app.js输入以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const Koa = require("koa");
const http = require("http");
const https = require("https");
const fs = require("fs");
const enforceHttps = require("koa-sslify");

let app = new Koa();

// 强制使用HTTPS访问
app.use(enforceHttps());

// SSL 证书配置
let options = {
key: fs.readFileSync("server.key"),
cert: fs.readFileSync("server.crt")
};

// 利用koa实例对象的callback()方法
// 结合http和https来启动服务器
http.createServer(app.callback()).listen(80);
https.createServer(options, app.callback()).listen(443);

3、其他问题

https 无法访问:

云服务器请注意在控制台配置相关安全组并开启,http是 80 端口,https是 443 端口。

pm2启动失败:

root用户下,即使执行sudo pm2 start app.js,也可能权限不够而启动失败。

请进入root账户,然后再执行pm2 start app.js来启动httphttps服务器。

请针对 Disqus 开启代理