添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
chrome现在要求网站都启用https,第二个也是防止网站被劫持。第二个https2也普及了,这个性能提升还是非常快的。koa普通服务后台就直接直连koa服务了,koa如何启用http2呢?

2023年8月10日更新:

http2 https http  现在是nodejs 内置的了

所以最新的配置如下:

const Koa = require('koa');
const static = require('koa-static');
const { koaBody } = require('koa-body');
const router = require('./src/router/index');
const path = require('path');
const app = new Koa();
const http2 = require('http2');
const http = require('http');
const fs = require('fs');
const { Port } = require('./src/const');
const cors = require('koa2-cors');
// 1.静态资源服务,指定对外提供访问的根目录,不包括 public
app.use(static(__dirname + '/public'));
// 使用文件上传中间件
app.use(koaBody({
  multipart: true,  //允许上传文件
  formidable: {
    //这是个 node 包, 设置一下选项
    uploadDir: path.join(__dirname, '/public/upload'), //设置上传目录
    keepExtensions: true,  //设置文件后缀名保留
    maxFieldsSize: 1000 * 1024 * 1024,
    /* onFileBegin:(name,file) => { // 文件上传前的设置
       // console.log(`name: ${name}`);
       // console.log(file);
app.use(cors(
    exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'],
    maxAge: 5,
    credentials: true,
    allowMethods: ['GET', 'POST','PUT', 'DELETE'],
    allowHeaders: ['Content-Type', 'Authorization', 'Accept'],
app.use((ctx, next) => {
  return next().catch((err) => {
    if (err.status === 401) {
      ctx.status = 401;
      ctx.body = 'Protected resource, use Authorization header to get access\n';
    } else {
      throw err;
router(app);
app.use(async (ctx) => {
  ctx.body = {
    result: true,
    data: '后台首页',
    message: 'ok'
const httpsServer = http2.createSecureServer({
  allowHTTP1: true,
  key: fs.readFileSync(path.join(__dirname, '/ssl/www.demo.cn.key')),
  cert: fs.readFileSync(path.join(__dirname, '/ssl/www.demo.cn_bundle.crt')),
}, app.callback());
httpsServer.listen(443);
// const httpServer = http.createServer(app.callback());
// httpServer.listen(80);
// app.listen(Port);




chrome现在要求网站都启用https,第二个也是防止网站被劫持。

关于https,推荐参看:

创建一个https服务

const Koa = require('koa');
const https = require('https')
const sslify = require('koa-sslify').default
app.use(sslify())
const options = {
  key: fs.readFileSync(__dirname + '/ssl/www.sekocnc.cn.key'),
  cert: fs.readFileSync(__dirname + '/ssl/www.sekocnc.cn_bundle.pem'),
https.createServer(options, app.callback()).listen(3000, (err) => {
  if (err) {
    console.log('服务启动出错', err);
  } else {
    // db.connect();  // 数据库连接
    console.log('guessWord-server运行在' + Const.Port + '端口');
});

都启用了https,那么就启用http2呗。关于http2,推荐:

创建一个http2服务

const http2 = require('http2');
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
  ctx.body = 'Hello World';
http2.createSecureServer({
  key: readFileSync(`${__dirname}/localhost-privkey.pem`),
  cert: readFileSync(`${__dirname}/localhost-cert.pem`),
}, app.callback()).listen(3000);

其他的,可以参看: https://dexecure.com/blog/native-http2-support-node-frameworks-hapi-koa-express/

这个教程写的非常详细



转载 本站 文章《 koa服务器启用HTTPS与HTTP/2:nodejs启用http2服务 》,
请注明出处: https://www.zhoulujun.cn/html/webfront/server/koa/8831.html