开启 SSL

Node.js 的 HTTPs 服务器可以与 AdonisJs 一起使用,如下所示。想法是使用文件 https 内的 Node.js 模块 server.js 。

const { Ignitor } = require('@adonisjs/ignitor')
const path = require('path')
const https = require('https')
const fs = require('fs')

// Certificate
const options = {
  key: fs.readFileSync(path.join(__dirname, './server.key')),
  cert: fs.readFileSync(path.join(__dirname, './server.crt'))
}

new Ignitor(require('@adonisjs/fold'))
  .appRoot(__dirname)
  .fireHttpServer((handler) => {
    return https.createServer(options, handler)
  })
  .catch(console.error)

真正的工作发生在 fireHttpServer 方法内部。此函数将单个参数作为回调,并且返回值必须是 Node.js 服务器的实例。

自签名证书

在开发过程中,您还可以使用自签名证书。它需要来自 npm 的额外依赖。

npm i pem
const { Ignitor } = require('@adonisjs/ignitor')
const https = require('https')
const pem = require('pem')

pem.createCertificate({ days: 1, selfSigned: true }, (error, keys) => {
  if (error) {
    return console.log(error)
  }

  const options = {
    key: keys.serviceKey,
    cert: keys.certificate
  }

  new Ignitor(require('@adonisjs/fold'))
    .appRoot(__dirname)
    .fireHttpServer((handler) => {
      return https.createServer(options, handler)
    })
    .catch(console.error)
})
最后一次更新: 7/6/2019, 11:29:57 PM