zoukankan      html  css  js  c++  java
  • nuxt https


    我用的模板是nxut-express,版本是:1.4.2。服务器:阿里云。
    一、申请免费证书:
    网站能通过https访问,首先得申请https证书,付费的阿里云上有售卖的,一年几千块。免费的可以通过certbot工具生成,也可以去阿里云上获取。


    1、certbot
    certbot官网:https://certbot.eff.org/
    certbot和let's encrypt什么关系?我的理解,certbot是更方便的生成let's encrypt签发证书的一个工具。
    2、阿里云
    阿里云的免费证书在 域名服务->找到对应的域名->管理->免费开启SSL证书,最后去下载证书。下载下来是2个文件。
    二、nuxt配置
    我用的nuxt是有sever文件夹的,其中sever/index.js:

    const fs = require('fs');
    const http = require('http');
    const https = require('https');
    const path =require('path');
    
    import express from 'express'
    import bodyParser from 'body-parser';
    import { Nuxt, Builder } from 'nuxt'
    import {timed} from "./schedule/index";
    
    import api from './api'
    
    const app = express()
    const host = process.env.HOST || '127.0.0.1'
    const port = process.env.PORT || 3000;
    
    // app.set('port', port)
    //express.static 函数提供的路径相对于您在其中启动 node 进程的目录。
    app.use('/static',express.static('static'));
    app.use(express.static('./')); //./这是命令运行的位置
    
    app.use(bodyParser.json({limit: '1mb'})); //这里指定参数使用 json 格式
    app.use(bodyParser.urlencoded({
    extended: true
    }));
    
    // Import API Routes
    app.use('/api', api)
    
    // Import and Set Nuxt.js options
    let config = require('../nuxt.config.js')
    config.dev = !(process.env.NODE_ENV === 'production')
    
    // Init Nuxt.js
    const nuxt = new Nuxt(config)
    
    // Build only in dev mode
    if (config.dev) {
    const builder = new Builder(nuxt)
    builder.build()
    }
    
    // Give nuxt middleware to express
    app.use(nuxt.render)
    
    // Listen the server
    const httpServer = http.createServer(app);
    httpServer.listen(port, host,function(){
    console.log('http启动...');
    });
    console.log('Server listening on ' + host + ':' + port) // eslint-disable-line no-console
    //io
    
    //https相关
    if(process.env.NODE_ENV === 'production'){
    const privateKey = fs.readFileSync(path.resolve(__dirname,'cert_ali/1538367494158.key'),'utf8');
    const certificate = fs.readFileSync(path.resolve(__dirname,'cert_ali/1538367494158.pem'), 'utf8');
    // const ca = fs.readFileSync(path.resolve(__dirname,'cert/chain.pem'), 'utf8');
    
    const credentials = {
    key: privateKey,
    cert: certificate,
    // ca: ca
    };
    const httpsServer = https.createServer(credentials, app);
    httpsServer.listen(443,host,function(){
    console.log('https启动...');
    })
    }
    

      

    这段代码只在生产环境启用https服务。

    三、管理阿里云防火墙,开启443端口
    前面2步骤结束后,一直访问https没反应,不报错也不返回任何东西,一直在加载网站。

     我的网站,直播客:

    https://www.zhiboke.site/ 

  • 相关阅读:
    dirname,basename的用法与用途
    终极解决方案——sbt配置阿里镜像源,解决sbt下载慢,dump project structure from sbt耗时问题
    linux-manjaro下添加Yahei Hybrid Consola字体
    Idea无法调出搜狗等中文输入法
    Spring 源码学习系列
    BF算法
    Mybatis Mapper接口是如何找到实现类的-源码分析
    Lua脚本在redis分布式锁场景的运用
    GO语言一行代码实现反向代理
    SpringMVC源码分析-400异常处理流程及解决方法
  • 原文地址:https://www.cnblogs.com/xiaochongchong/p/9638875.html
Copyright © 2011-2022 走看看