使用Node.js和Express.js架設HTTP/2伺服器

banq發表於2016-07-15
使用Node.js+Express.js架設http2伺服器是非常簡單。首先在伺服器端使用openssl產生金鑰檔案,然後在js檔案中包含這個金鑰檔案。

$ mkdir http2-express 
$ cd http2-express
$ openssl genrsa -des3 -passout pass:x -out server.pass.key 2048
...
$ openssl rsa -passin pass:x -in server.pass.key -out server.key
writing RSA key
$ rm server.pass.key
$ openssl req -new -key server.key -out server.csr

$ openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt
<p class="indent">


下一步,初始化package.json和下載spdy和express:

npm init
npm i express spdy --save
<p class="indent">


建立一個index.js作為埠,頭部輸入:

const port = 3000
const spdy = require('spdy')
const express = require('express')
const path = require('path')
const fs = require('fs')

const app = express()
<p class="indent">


下一步定義Express路由:

app.get('*', (req, res) => {
    res
      .status(200)
      .json({message: 'ok'})
})
<p class="indent">


下面需要載入key和金鑰檔案:

const options = {
    key: fs.readFileSync(__dirname + '/server.key'),
    cert:  fs.readFileSync(__dirname + '/server.crt')
}
<p class="indent">


最後,將SSL選項和Express例項一起載入:

spdy
  .createServer(options, app)
  .listen(port, (error) => {
    if (error) {
      console.error(error)
      return process.exit(1)
    } else {
      console.log('Listening on port: ' + port + '.')
    }
  })
<p class="indent">


原始碼見:github

Easy HTTP/2 Server with Node.js and Express.js

相關文章