资讯专栏INFORMATION COLUMN

只要三步,将koa的node服务升级到https

MarvinZhang / 3872人阅读

摘要:开篇写一堆可有可无的内容都是耍流氓,所以我们直接开始讲升级步骤。一安装必要的包或者用于启动服务用于获取读取证书文件用于将请求强制转换为请求二获取证书网上有很多教程了,可以自行查阅。

开篇写一堆可有可无的内容都是耍流氓,所以我们直接开始讲升级步骤。

一、安装必要的包
yarn add https fs koa-sslify

或者

npm i -S https fs koa-sslify

https 用于启动https服务
fs用于获取读取证书文件
koa-sslify 用于将http请求强制转换为https请求

二、获取证书

网上有很多教程了,可以自行查阅。
我是在阿里云下载免费证书(罗老师又不是不能用.jpg)。

三、修改服务入口文件代码

引入包

const https = require("https");
const fs = require("fs");
const enforceHttps = require("koa-sslify");

设置强制转化http请求为https

// Force HTTPS on all page
app.use(enforceHttps());

修改启动服务语句

const options = {
  key: fs.readFileSync("./app/ssl/ssl.key"),
  cert: fs.readFileSync("./app/ssl/ssl.pem")
};
https.createServer(options, app.callback()).listen(config.port, () => {
  // const host = server.address().address
  const host = config.host;
  const port = config.port;
  console.log(`应用实例,访问地址为 https://${host}:${port}`);
});

贴个服务端入口完整代码

const Koa = require("koa");
const cors = require("koa2-cors");
const koaStatic = require("koa-static");
const bodyParser = require("koa-bodyparser");
const path = require("path");
const https = require("https");
const fs = require("fs");
const enforceHttps = require("koa-sslify");
const config = require("./config/config");
const router2controller = require("./app/router2controller.js");
const history = require("./app/utils/middleware/connect-history-api-fallback.js");

const app = new Koa();
// 刷新后404找到路由(要放最上面)
app.use(history());

// 强制转换https
app.use(enforceHttps());

// 配置跨域、请求头
app.use(cors({
  origin: (ctx) => {
    return "*";
  },
  exposeHeaders: ["WWW-Authenticate", "Server-Authorization"],
  maxAge: 5,
  credentials: true,
  allowMethods: ["GET", "POST", "OPTIONS"],
  allowHeaders: ["Content-Type", "Authorization", "Accept"],
}));
// 将 post 请求和表单提交的查询字符串转换成对象,并挂在 ctx.request.body 上
app.use(bodyParser({
  enableTypes: ["json", "form", "text"], // 配置可解析的类型
}));
// 打包后静态资源访问路径
const staticPath = "../dist"
app.use(koaStatic(
  path.join(__dirname, staticPath)
));
// 路由处理
app.use(router2controller());

const options = {
  key: fs.readFileSync("./app/ssl/ssl.key"),
  cert: fs.readFileSync("./app/ssl/ssl.pem")
};
https.createServer(options, app.callback()).listen(config.port, () => {
  // const host = server.address().address
  const host = config.host;
  const port = config.port;
  console.log(`应用实例,访问地址为 https://${host}:${port}`);
});

现在重启服务就可以了

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106979.html

相关文章

  • 一只node爬虫升级打怪之路

    摘要:我是一个知乎轻微重度用户,之前写了一只爬虫帮我爬取并分析它的数据,我感觉这个过程还是挺有意思,因为这是一个不断给自己创造问题又去解决问题的过程。所以这只爬虫还有登陆知乎搜索题目的功能。 我一直觉得,爬虫是许多web开发人员难以回避的点。我们也应该或多或少的去接触这方面,因为可以从爬虫中学习到web开发中应当掌握的一些基本知识。而且,它还很有趣。 我是一个知乎轻微重度用户,之前写了一只爬...

    shiweifu 评论0 收藏0
  • 最简单前后端分离部署(Koa2)

    摘要:既然前段工程化是基于,那么选择做前后端分离部署也是理所应当的。有了这三个东西,我们就可以搭建出最简单的前端服务器了。 前后端分离开发应该已经是很多公司的标配了,然而,在前端工程化的体系下,开发环境代码和生产环境代码往往是平级的,不再是整个文件夹往服务器上一扔就了事,这让每次的部署过程相当繁琐。 如下是常见的项目目录: Project └──javaSrc └──app ...

    SegmentFault 评论0 收藏0
  • 精读《Nodejs V12》

    摘要:更好的安全性随着的发布,从升级到了,更安全且更易配置。通过使用,程序可以减少握手所需时间来提升请求性能。提供诊断报告有一项实验功能,根据用户需求提供诊断报告,包括崩溃性能下降内存泄露使用高等等。前端精读帮你筛选靠谱的内容。 1. 引言 Node12 发布有几个月了,让我们跟随 Nodejs 12 一起看看 Node12 带来了哪些改变。 2. 概述 Node12 与以往的版本不同,带来...

    CoderStudy 评论0 收藏0
  • iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 错误处理

    沪江CCtalk视频地址:https://www.cctalk.com/v/15114923887518 showImg(https://segmentfault.com/img/remote/1460000013096340?w=1282&h=714); 处理错误请求 爱能遮掩一切过错。 当我们在访问一个站点的时候,如果访问的地址不存在(404),或服务器内部发生了错误(500),站点会展示出某...

    leeon 评论0 收藏0
  • node服务端渲染(完整demo)

    摘要:简介搭建多页面服务端渲染技术点搭建服务创建页面路由模板引擎组合打包多页面端异步请求服务端日志打印项目源码运行一现代服务端渲染的由来服务端渲染概念是指,浏览器向服务器发出请求页面,服务端将准备好的模板和数据组装成完整的返回给浏览器展示前端后 简介 nodejs搭建多页面服务端渲染 技术点 koa 搭建服务 koa-router 创建页面路由 nunjucks 模板引擎组合html ...

    cheukyin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<