koa2服務配置SSL

一:前言

1:SSL證書

個人域名在騰訊雲,每次解析新建一個三級域名(假設是 aaa.jiangw1.com ),都會贈送一年的SSL,申請成功後下載SSL證書,以下:javascript

能夠看到準備了各類服務器的文件,node服務用紅圈中的通用ssl文件便可。java

2:解析

aaa.jiangw1.com記錄類型填 A ,記錄值填服務器公網IPnode

二:代碼

如下代碼限定 koa2項目,其他node項目也都相似。linux

1:安裝依賴

npm install koa-sslify
npm install koa2-cors
複製代碼

2:app.js新增

const app = new Koa();
const cors = require('koa2-cors');
const sslify = require('koa-sslify').default;

// 使用 ssl
app.use(sslify());

// 跨域設置
app.use(cors({
  origin: function (ctx) {
    return ctx.header.origin;
  }
}))
複製代碼

3:bin文件夾修改

新建ssl文件夾,放入SSL證書中的 .key和 .pem文件。npm

修改 bin/www,以下:跨域

var https = require("https");
var fs = require("fs");
var path = require("path");
/** * Create HTTP server. */
// SSL options
var options = {
  key: fs.readFileSync(path.join(__dirname, './ssl/aaa.jiangw1.com.key')),
  cert: fs.readFileSync(path.join(__dirname, './ssl/aaa.jiangw1.com.pem'))
};
// var server = http.createServer(app.callback());
var httpsServer  = https.createServer(options, app.callback());
httpsServer.listen(port, (err) => {
  if (err) {
    console.log('server init error', err);
  } else {
    console.log('server running at port :' + port);
  }
});
httpsServer.on('error', onError);
httpsServer.on('listening', onListening);
/** * Event listener for HTTP server "listening" event. */
function onListening() {
  // var addr = server.address();
  var addr = httpsServer.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}
複製代碼

4:啓動

本地啓動:

瀏覽器進入 https://localhost:3010, 能進去說明本地配置成功,應該會提示域名無效。瀏覽器

服務端啓動:

源代碼上傳後,用pm2啓動服務,瀏覽器訪問 aaa.jiangw1.com, 能進去說明本地配置成功服務器

三:注意事項

  • linux服務器要放開 443端口
  • ssl證書文件必定要配置準確
  • node服務的端口必定要暴露出來
  • 域名解析要填準確
相關文章
相關標籤/搜索