加入收藏 | 设为首页 | 会员中心 | 我要投稿 南京站长网 (https://www.025zz.com.cn/)- 自然语言处理、建站、经验、云计算、图像分析!
当前位置: 首页 > 教程 > 正文

如何用Node构建Https服务

发布时间:2023-08-04 11:30:36 所属栏目:教程 来源:转载
导读:   这篇“如何用Node搭建Https服务”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所
  这篇“如何用Node搭建Https服务”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何用Node搭建Https服务”文章吧。
 
  Node.js用于做小程序后台服务,域名要求必须是Https协议。在Node.js开启Http服务是非常简单的,如下:
 
  const http = require('http');
 
  const server = http.createServer((req, res) => {
 
      res.writeHead(200, { 'Content-Type': 'text/html;charset=utf8' });
 
      res.end('访问成功')
 
  });
 
  server.listen(8080, () => {
 
      console.log('服务已开启');
 
  })
 
  如何用Node搭建Https服务如果想使用Https服务需要两步:1. 需要有一份SSL证书;2. 使用Node.js自身的Https模块。
 
  SSL证书
 
  获取SSL证书方式有两种:
 
  自己借助openSSL工具生成SSL证书
 
  下载某些平台提供的免费/付费的SSL证书(推荐)
 
  我是使用某云平台提供免费的证书
 
  点击下载后选择服务器类型
 
  下载后的文件分别是以.key、.pem为后缀,其中.key文件是base64加密私钥,.pem文件是base64加密的证书
 
  使用Node.js自身的Https模块开启一个服务
 
  相较Http,它多了一个options参数。
 
  const https = require('https');
 
  const fs = require('fs');
 
  const path = require('path');
 
  const options = {
 
      key: fs.readFileSync(path.join(__dirname, './ssl/9499016_www.linglan01.cn.key')),
 
      cert: fs.readFileSync(path.join(__dirname, './ssl/9499016_www.linglan01.cn.pem')),
 
  };
 
  const server = https.createServer(options, (req, res) => {
 
      res.writeHead(200, { 'Content-Type': 'text/html;charset=utf8' });
 
      res.end('访问成功')
 
  });
 
  server.listen(8080, () => {
 
      console.log('服务已开启');
 
  })
 
  由于SSL证书我绑定的域名是www.linglan01.cn ,当我使用https://127.0.0.1:8080 访问服务时与绑定的域名不相符,它会被拦截访问,仅允许 www.linglan01.cn 访问。
 
  使用域名为www.linglan01.cn 才能正常的访问。
 
  使用Express框架开启Https
 
  工作中肯定是使用社区的Express等框架进行开发,想在Express等框架中开启Https也非常容易,以Express举例:
 
  const https = require('https');
 
  const fs = require('fs');
 
  const path = require('path');
 
  const express = require('express')
 
  const app = express();
 
  app.get('/chat', (req, res) => {
 
      res.send('我是https')
 
  });
 
  const options = {
 
      key: fs.readFileSync(path.join(__dirname, './ssl/9499016_www.linglan01.cn.key')),
 
      cert: fs.readFileSync(path.join(__dirname, './ssl/9499016_www.linglan01.cn.pem')),
 
  };
 
  const server = https.createServer(options, app);
 
  server.listen(8080, () => {
 
      console.log('服务已开启');
 
  })
 

(编辑:南京站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章