Skip to content

Latest commit

 

History

History
78 lines (51 loc) · 2.54 KB

60.精读《如何在 nodejs 使用环境变量》.md

File metadata and controls

78 lines (51 loc) · 2.54 KB

60.精读《如何在 nodejs 使用环境变量》

开发和正产环境如何管理环境变量

开发环境

  • 使用命令行传递环境变量,拓展性较差,

    PORT = 65534 node bin/www
  • 使用.env 文件

    PORT=65534
    DB_CONN="mongodb://react-cosmos-db:swQOhAsVjfHx3Q9VXh29T9U8xQNVGQ78lEQaL6yMNq3rOSA1WhUXHTOcmDf38Q8rg14NHtQLcUuMA==@react-cosmos-db.documents.azure.com:10255/?ssl=true&replicaSet=globaldb"
    SECRET_KEY="b6264fca-8adf-457f-a94f-5a4b0d1ca2b9"
    • 通过dotenv这个 npm 包可以读取.env 文件配置, 通过 process.env.xxx (可以获取到配置)
    • 注意:不要将配置文件发送到 Git 仓库,可能会泄露隐私数据
  • VsCode 启动配置 (配置 Node 启动配置, launch.json)

    {
      
      "env": {
        "PORT": "65534",
        "DB_CONN": "mongodb://xxx",
        "SECRET_KEY": "xxxx"
      },
    }
    • 可以和.env 文件打通,配置设置envFile属性: {"envFile": "${workspaceFolder}/env"}
  • 使用 Npm Scripts, 使用npm start 运行项目,而不是暴露出 Node 命令, 需要首先在 VsCode launch.json 配置 Npm 模式

    • "runtimeExecutable": "npm",
      "runtimeArgs": [
        "start"
      ],
      "envFile": "${workspaceFolder}/.env"
    • 同时需要给 Node 脚本添加 --inspect参数, 才能触发 Vscode debugger 钩子

生产环境

  • 作者推荐使用微软的 Azure 管理环境变量,通过 Azure CLI 启动 Node 项目的时候,同时从云服务平台拿到环境变量信息

精读

  • 私有部署 - 私有 Git + 私有云服务 (换句话说就是我的私人仓库够安全,怎么放都无所谓)
  • 持久化配置服务,通过自建或者开源持久化配置云服务存储环境变量,服务器通过 SDK 获取
  • 加密服务:安全级别非常高的情况下,Git 也不允许提交,又要防止第三方(运营商)拦截,就要使用加密服务。
    • 流程:
      • 加密平台注册,拿到秘钥
      • 加密平台设置环境变量,加密平台对内容进行加密
      • 利用 Node SDK 获取到加密平台输出的密文
      • 利用 SDK 和秘钥解密明文

summary

  • 对于基础设施完备的公司,可能不需要你关心环境变量安全性问题,对于自己使用第三方服务器,或者搭建博客的同学,需要注意三个点:
    • 不要将重要的环境变量提交到公开的 Git 仓库
    • 本地通过 VsCode 调试环境变量安全方便
    • 生产环境通过云服务商提供的环境变量配置服务拿到环境变量