插件窝 干货文章 如何使用NGINX和PM2实现VPS服务器上的服务扩展和负载均衡

如何使用NGINX和PM2实现VPS服务器上的服务扩展和负载均衡

NGINX PM2 server 配置 865    来源:    2025-04-11

使用NGINX和PM2实现VPS服务器上的服务扩展和负载均衡

概述

在VPS服务器上使用NGINX和PM2可以实现Node.js应用的服务扩展和负载均衡。PM2负责管理Node.js进程,而NGINX则作为反向代理服务器进行负载均衡。

实施步骤

1. 安装必要软件

# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装Node.js和npm
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs

# 安装PM2
sudo npm install -g pm2

# 安装NGINX
sudo apt install -y nginx

2. 使用PM2管理Node.js应用

# 启动应用
pm2 start app.js -i max  # -i max表示根据CPU核心数启动最大进程数

# 或者指定进程数
pm2 start app.js -i 4  # 启动4个进程

# 保存PM2配置
pm2 save

# 设置开机自启
pm2 startup

3. 配置NGINX作为负载均衡器

编辑NGINX配置文件(通常在/etc/nginx/sites-available/default或创建新的配置文件):

upstream node_app {
    # 使用least_conn算法进行负载均衡
    least_conn;

    # 配置多个Node.js实例
    server 127.0.0.1:3000;
    server 127.0.0.1:3001;
    server 127.0.0.1:3002;
    server 127.0.0.1:3003;

    # 保持连接以提高性能
    keepalive 64;
}

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://node_app;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_cache_bypass $http_upgrade;
    }
}

4. 高级配置选项

健康检查

upstream node_app {
    server 127.0.0.1:3000 max_fails=3 fail_timeout=30s;
    server 127.0.0.1:3001 max_fails=3 fail_timeout=30s;

    # 每5秒检查一次后端服务器
    check interval=5000 rise=2 fall=3 timeout=1000;
}

SSL配置

server {
    listen 443 ssl;
    server_name yourdomain.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    # SSL优化配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256...';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    location / {
        proxy_pass http://node_app;
        # ...其他代理设置
    }
}

5. 测试和优化

# 测试NGINX配置
sudo nginx -t

# 重启NGINX
sudo systemctl restart nginx

# 监控PM2进程
pm2 monit

# 查看日志
pm2 logs

扩展策略

  1. 垂直扩展:升级VPS规格(CPU、内存)
  2. 水平扩展
    • 添加更多VPS实例
    • 使用NGINX作为中心负载均衡器指向多个VPS
  3. 数据库分离:将数据库移至独立服务器
  4. 缓存策略:实现Redis缓存层

监控和维护

  1. 设置PM2日志轮转:
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30
  1. 使用PM2的集群模式自动重启失败的进程

  2. 定期检查服务器资源使用情况:

htop
df -h
free -m

通过以上配置,您可以在VPS上建立一个高效、可扩展的Node.js服务架构,利用NGINX的负载均衡能力和PM2的进程管理功能,确保应用的高可用性和性能。