跳到主要内容

PM2 与 Nginx 部署 Node 服务的稳定组合

· 阅读需 2 分钟
一介布衣
全栈开发者 / 技术写作者

很多 Node.js 项目在开发阶段都很轻快,但一到线上就开始暴露另一个问题:服务虽然能跑起来,可一旦遇到重启、日志、端口暴露、反向代理这些现实问题,整套方案就显得不够稳。

到 2021 年为止,我依然觉得 PM2 + Nginx 是很实用的一套组合。它不花哨,但对大多数 Node 服务已经够用。

为什么这两个工具能配在一起

它们分工很清楚:

  • PM2 负责进程托管
  • Nginx 负责流量入口和反向代理

这样一来,Node 服务本身就可以更专注于业务逻辑。

PM2 最实际的价值

很多人第一次用 PM2,只把它当成“后台启动工具”。其实它更重要的是解决这些问题:

  • 服务异常退出后的自动拉起
  • 多实例进程管理
  • 日志集中查看
  • 启动脚本统一
pm2 start ecosystem.config.js
pm2 status
pm2 logs api
pm2 reload api

这些能力放在线上环境里,比手工 node app.js 稳定太多。

Nginx 为什么依然必要

即便 Node 自己也能监听端口,Nginx 仍然有几个很现实的优势:

  • 统一处理 HTTPS
  • 静态资源分发更轻
  • 更方便做限流和头信息控制
  • 反向代理规则更成熟

所以我通常不会让 Node 服务直接裸露给外部流量。

一套适合小中型服务的组合方式

比较常见的上线结构可以是:

  1. Nginx 对外暴露 80/443
  2. PM2 托管 Node 进程
  3. Node 服务只监听内网端口

这种方式虽然传统,但非常稳。

真正要注意的不是“怎么启动”,而是“怎么维护”

这套组合最容易被忽略的,是后续运维细节:

  • 日志别无限长
  • reload 和 restart 的语义要分清
  • 配置文件要放进版本控制

这些细节决定了线上环境是“能跑”,还是“能长期跑”。

小结

PM2 + Nginx 这种组合的价值,不在于技术有多新,而在于它足够朴素、足够稳定。对 2021 年很多 Node.js 团队来说,这已经是一套很有性价比的线上方案。