Nginx 与 Node.js(PM2)的对比优势及 HTTPS 自动续签配置详解

在现代 Web 应用部署中,Node.js 搭配 PM2 是常见的后端运行方案,而 Nginx 是最广泛使用的 Web 服务器和反向代理工具。很多开发者在使用 PM2 管理 Node 应用后,常常会疑惑:"我还需要用 Nginx 吗? "

本文将系统讲解:

  • Nginx 相对于 PM2 的优势
  • Nginx + Node 的推荐部署结构
  • 如何通过 Certbot 实现 HTTPS 的自动续签

一、PM2 与 Nginx 各自职责与优势

1. PM2 是什么?

PM2 是一个 Node.js 进程管理工具,主要用于:

  • 守护进程(进程挂掉会自动重启)
  • 日志管理
  • 集群模式(多核利用)
  • 热重载
  • 启动脚本管理(如 pm2 startup

✅ 适用于:Node.js 应用的稳定运行与管理


2. Nginx 是什么?

Nginx 是一个高性能 Web 服务器和反向代理服务器,主要用于:

  • 处理 HTTP/HTTPS 请求
  • 提供静态文件服务
  • 反向代理到后端(如 Node、Python、PHP)
  • 负载均衡、限流、防火墙、安全控制
  • SSL / TLS 终端接入(HTTPS)

✅ 适用于:生产环境中的请求转发、安全防护、性能优化


3. 为什么有了 PM2 还要用 Nginx?

功能 PM2 Nginx 推荐使用
Node 应用守护 ✅ 是 ❌ 否 PM2
静态文件处理 ✅ 有限 ✅ 高效 Nginx 更快
TLS/HTTPS 支持 ✅ 可实现 ✅ 简洁稳定 Nginx 更成熟
Gzip 压缩 ✅ 可做 ✅ 原生支持 Nginx 性能优
请求限速/防攻击 ❌ 不擅长 ✅ 原生支持 Nginx
多服务代理 ❌ 需额外逻辑 ✅ 灵活配置 Nginx
负载均衡 ✅ 可做 ✅ 更强 二者可结合
自动续签 HTTPS ❌ 需手动 ✅ 支持 Certbot Nginx 更好

✅ 结论:Nginx + PM2 是一个强强组合,前者处理 Web 层、后者管理 Node 后端,是现代生产部署的标准做法。


二、推荐部署架构

css 复制代码
plaintext
复制编辑
[ Internet ]
     ↓
[ Nginx (监听 80/443) ]
     ↓
[ Node.js 应用 (由 PM2 守护,监听 3000) ]

Nginx 接管所有公网流量,负责:

  • 自动将 HTTP 重定向到 HTTPS
  • 反向代理到 Node 应用
  • 控制缓存、Gzip、安全头部
  • 管理 TLS 证书(通过 Certbot 自动续签)

Node.js 专注业务逻辑,由 PM2 守护。


三、使用 Nginx 实现 HTTPS 自动续签(Let's Encrypt)

1. 准备条件

  • 一台部署了 Nginx 的服务器(如阿里云)
  • 一个解析到该服务器的域名(如 example.com
  • 已开放 80 和 443 端口

2. 安装 Certbot

Ubuntu / Debian:

sql 复制代码
bash
复制编辑
sudo apt update
sudo apt install certbot python3-certbot-nginx

CentOS / RHEL:

arduino 复制代码
bash
复制编辑
sudo yum install epel-release
sudo yum install certbot python3-certbot-nginx

3. 申请免费 HTTPS 证书(自动配置 Nginx)

css 复制代码
bash
复制编辑
sudo certbot --nginx -d example.com -d www.example.com

成功后:

  • 自动获取证书
  • 自动配置 Nginx SSL 设置
  • 配置 80 → 443 重定向

4. 检查 HTTPS 自动续签是否启用

运行 dry-run 测试:

arduino 复制代码
bash
复制编辑
sudo certbot renew --dry-run

如果输出包含:

css 复制代码
css
复制编辑
Congratulations, all renewals succeeded

说明续签配置成功。Certbot 会自动添加计划任务,无需手动维护。


5. 手动 Nginx 配置示例(可自定义控制)

ini 复制代码
nginx
复制编辑
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://localhost:3000;  # Node 应用监听端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

四、总结

  • PM2 专注于 Node 应用的稳定运行
  • Nginx 在请求管理、安全控制和性能方面不可替代
  • 利用 certbot,可以轻松实现免费 SSL + 自动续签
  • 推荐部署:Nginx + Node.js(PM2) ,构成安全、稳定、高性能的 Web 服务栈

如果你正在使用阿里云或其他 VPS,只需要运行如下命令就能完成部署:

css 复制代码
bash
复制编辑
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com

安全、免费、自动续期,一站式 HTTPS 解决方案。

相关推荐
ai小鬼头3 小时前
Ollama+OpenWeb最新版0.42+0.3.35一键安装教程,轻松搞定AI模型部署
后端·架构·github
萧曵 丶3 小时前
Rust 所有权系统:深入浅出指南
开发语言·后端·rust
老任与码4 小时前
Spring AI Alibaba(1)——基本使用
java·人工智能·后端·springaialibaba
华子w9089258594 小时前
基于 SpringBoot+VueJS 的农产品研究报告管理系统设计与实现
vue.js·spring boot·后端
星辰离彬5 小时前
Java 与 MySQL 性能优化:Java应用中MySQL慢SQL诊断与优化实战
java·后端·sql·mysql·性能优化
GetcharZp6 小时前
彻底告别数据焦虑!这款开源神器 RustDesk,让你自建一个比向日葵、ToDesk 更安全的远程桌面
后端·rust
jack_yin7 小时前
Telegram DeepSeek Bot 管理平台 发布啦!
后端
小码编匠7 小时前
C# 上位机开发怎么学?给自动化工程师的建议
后端·c#·.net
库森学长7 小时前
面试官:发生OOM后,JVM还能运行吗?
jvm·后端·面试
转转技术团队7 小时前
二奢仓店的静默打印代理实现
java·后端