Appearance
nginx 配置二级域名提供 api 接口
最近在学习 node.js,想自己搭建 api 接口整点花活,又不想在原来的域名上携带端口号访问,所以配置了二级域名来同支持,记录一下过程,避免遗忘。
1. 创建二级域名
首先在阿里云控制台,搜索 云解析DNS
添加二级域名,
点击添加记录
2.为子域名申请 ssl 证书
打开免费证书页面,这里要注意的是,如果你的创建证书为 0,则需要点击立即购买(无实际消费)
点击创建证书
稍等片刻,域名验证完成后有短信提醒
现在就可以下载证书了,本次部署环境为 Ubuntu+nginx 就选择 nginx 证书格式即可
3. 在云服务器的 nginx 中配置子域名信息
首先解压下载的证书文件,并上传到服务器 nginx 证书目录下/etc/nginx/cert
(没有则创建目录),上传方法多种多样,博主这里使用 vscode 提供的 ssh 服务进行上传,过程不再赘述
文件名可以修改为方便识别名称,但注意不要修改后缀名
配置 nginx 文件,为方便对以后多个子域名(或许有多个)进行维护,我们这里采取每个子域名单独一个配置文件的方式
4.使用 pm2 启动服务
pm2 是个好东西,对于线上项目,如果直接通过 node app 来启动,因为 node 是单线程的,所以如果报错了可能会使项目直接停止,从而导致整个服务崩溃。 例举一些 pm2 的特性:
- 后台运行(关掉 cmd 窗口依然运行)
- 0 秒停机重载,维护升级时不需要停机
- Linux (stable) & MacOSx (stable) & Windows (stable).多平台支持
- 进程守护 (停止不稳定的进程,避免无限循环)
- 内建负载均衡
- 实时控制台检测
- 提供 HTTP API 等
- 远程控制和实时的接口 API ( nodejs 模块,允许和 PM2 进程管理器交互 )
- 不仅仅可以启动 node 程序,对于一般的脚本程序同样可以
安装 pm2 需要 node 环境,如果没有可以使用以下方法在服务器快速安装指定版本的 node 环境:
bash
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
只需要修改setup_
后面的数字就可以安装指定版本的 nodejs 了
然后修改 npm 的下载源
bash
npm config set registryhttps://registry.npmmirror.com
这里不推荐使用 nrm 替换源,因为就目前而言(2023 年 05 月 13 日),nrm 依赖的 open 模块从 cjs 升级为 mjs,导致 nrm 执行一直报错 不如直接修改配置项来的方便。
博主喜好pnpm
来进行包管理,是否安装 pnpm 看大家喜好(安装可选)。
bash
pnpm add -g pm2
bash
npm i -g pm2
现在使用 pm2 来启动自己的服务
bash
pm2 --watch -n HelloApi start index.js
服务启动完成, 测试一下 点我测试