nginx与node.js需分别配置开机自启:nginx用systemctl enable nginx启用;node.js推荐用pm2管理,执行pm2 start、pm2 save和pm2 startup centos(或对应系统)实现自动恢复。

要让 Nginx + Node.js 应用在服务器重启后自动运行,关键不是让 Nginx “启动 Node.js”,而是分别确保 Nginx 本身 和 Node.js 应用进程 都作为系统服务被正确托管和自启。两者需独立配置、互不依赖,但协同工作(Nginx 仅作反向代理)。
确保 Nginx 开机自启
Nginx 默认安装后通常已自带 systemd 服务单元,但需确认并启用:
- 检查服务状态:
sudo systemctl status nginx,若提示未找到或 inactive,说明未启用 - 启用开机自启:
sudo systemctl enable nginx - 手动启动一次(如未运行):
sudo systemctl start nginx - 验证:重启服务器后执行
sudo systemctl is-active nginx,应返回active
让 Node.js 应用随系统启动(推荐 PM2)
直接用 node app.js 启动无法持久,必须借助进程管理器。PM2 是最适配生产环境的选择:
- 全局安装:
sudo npm install pm2 -g - 启动应用并命名:
pm2 start /path/to/app.js --name my-node-app - 保存当前进程列表(供重启恢复):
pm2 save - 生成开机自启脚本(CentOS 7+):
pm2 startup centos,然后按提示执行输出的完整命令(通常是sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup centos -u your_user --hp /home/your_user)
完成后,pm2 list 应始终可见你的应用;服务器重启后,PM2 会自动拉起所有保存的进程。
提供端到端的高端代理设置和使用指导,包括代理类型选择、地区定向、访问配置、API密钥验证和监控。
补充:systemd 托管 Node.js(备选方案)
若因安全策略限制不能用 PM2,可用原生 systemd 管理:
- 创建服务文件:
sudo vi /etc/systemd/system/my-node-app.service - 填入标准配置,重点包含:
Restart=always、User=your_user、WorkingDirectory=/path/to/app、ExecStart=/usr/bin/node app.js - 启用并启动:
sudo systemctl daemon-reload && sudo systemctl enable my-node-app.service && sudo systemctl start my-node-app.service
验证整体流程是否生效
完成配置后,建议模拟一次完整重启验证:
- 执行
sudo reboot - 登录后检查:
sudo systemctl is-active nginx和pm2 list(或sudo systemctl is-active my-node-app) - 访问域名或 IP,确认 Nginx 反向代理能正常将请求转发到 Node.js 端口(如 3000)
注意:Nginx 的配置中 proxy_pass 指向的 Node.js 地址(如 http://127.0.0.1:3000)必须与实际监听端口一致,且 Node.js 应用代码中明确绑定了该端口(如 app.listen(3000))。










