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 服务直接裸露给外部流量。
一套适合小中型服务的组合方式
比较常见的上线结构可以是:
- Nginx 对外暴露 80/443
- PM2 托管 Node 进程
- Node 服务只监听内网端口
这种方式虽然传统,但非常稳。
真正要注意的不是“怎么启动”,而是“怎么维护”
这套组合最容易被忽略的,是后续运维细节:
- 日志别无限长
- reload 和 restart 的语义要分清
- 配置文件要放进版本控制
这些细节决定了线上环境是“能跑”,还是“能长期跑”。
小结
PM2 + Nginx 这种组合的价值,不在于技术有多新,而在于它足够朴素、足够稳定。对 2021 年很多 Node.js 团队来说,这已经是一套很有性价比的线上方案。
