node.js配置ssl、http2

2017-7-11    分类: koa

koa2开启ssl安全协议、以及配置http2,所以教程都是基于koa2框架下修改的。

这里说明一下,网上的很多教程都是使用nginx来进行配置的,对于那些不熟悉linux系统的同学来说很痛苦。这里的教程基本都是安装node.js模块来实现的。

 

申请证书:https://cloud.tencent.com/product/ssl?fromSource=gwzcw.231572.231572.231572

申请好之后就可以下载了。

(注意如果在国内买的空间,例如:阿里云的记得要对外开放443端口)教程:https://www.xgllseo.com/?p=5797

 

0,系统依赖

本人使用的是centos 6.x系统,要使用ssl、http2,那就需要系统安装相应的依赖包。

具体查看https://www.xgllseo.com/?p=5731 中的 gcc、pcre、zlib和openssl 1.0.2以上版本

 

1,http2、ssl安装、以及使用

npm install http2 --save

编辑  ./bin/www  添加以下代码

var http2 = require('http2');
var fs = require('fs');
.
.
.
var options = {
 key: fs.readFileSync('/root/www/Nginx/2_www.easynode.cn.key','utf8'),
 cert: fs.readFileSync('/root/www/Nginx/1_www.easynode.cn_bundle.crt','utf8')
};
.
.
.
http2.createServer(options, app.callback()).listen(443);

以上的配置完成后可以同时访问80端口和443端口,但是我们需要自动跳转到443端口,可按照如下教程修改:

 

 

2,80端口自动跳转到443端口

安装koa-sslify

npm install koa-sslify --save

编辑app.js,添加以下代码
var enforceHttps = require('koa-sslify');
.
.
// middlewares
app.use(enforceHttps());

以上虽然可以实现需要的功能但是有缺点

1,对静态文件缓存(网上找遍了很多教程都没找到方法,都是使用nginx)

2,占用了443端口。(如果一个服务器上想多个网站都使用ssl,就只能使用一个端口了)

所以还是推荐使用nginx,来实现ssl、http2和静态文件缓存,最佳方案。

至于nginx教程:https://www.xgllseo.com/?p=5731