Skip to content

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

服务启动完成, 测试一下 点我测试