插件窝 干货文章 如何使用NGINX和PM2优化VPS服务器的负载均衡

如何使用NGINX和PM2优化VPS服务器的负载均衡

NGINX proxy 配置 PM2 807    来源:    2025-04-11

使用NGINX和PM2优化VPS服务器负载均衡方案

方案概述

通过NGINX作为反向代理和负载均衡器,配合PM2管理Node.js应用进程,可以有效优化VPS服务器的性能和可靠性。

实施步骤

1. 安装必要组件

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

# 安装NGINX
sudo apt install nginx -y

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

# 安装PM2
sudo npm install pm2@latest -g

2. 配置PM2管理应用

# 启动应用(假设应用入口是app.js)
pm2 start app.js -i max --name "myapp"

# 保存PM2配置
pm2 save

# 设置PM2开机启动
pm2 startup
# 执行生成的命令(会显示类似下面的命令)
# sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu

3. 配置NGINX负载均衡

编辑NGINX配置文件(通常位于/etc/nginx/sites-available/default):

upstream node_app {
    server 127.0.0.1:3000;
    server 127.0.0.1:3001;
    server 127.0.0.1:3002;
    # 添加更多实例端口...

    # 负载均衡策略(可选)
    # least_conn;  # 最少连接
    # ip_hash;     # IP哈希
}

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. 高级优化配置

启用HTTP/2和Gzip压缩

server {
    listen 443 ssl http2;
    # ...其他配置...

    # Gzip压缩
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}

连接数限制和缓冲优化

proxy_buffering on;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_connect_timeout 75s;
proxy_send_timeout 1800s;
proxy_read_timeout 1800s;

启用keepalive连接

upstream node_app {
    # ...之前配置...
    keepalive 32;
}

5. 测试和启用配置

# 测试NGINX配置
sudo nginx -t

# 重启NGINX
sudo systemctl restart nginx

监控和维护

PM2监控命令

# 查看应用状态
pm2 list

# 监控CPU/内存使用
pm2 monit

# 查看日志
pm2 logs

NGINX状态监控

# 在server块中添加
location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
}

安全加固建议

  1. 配置防火墙规则
  2. 设置fail2ban防止暴力破解
  3. 定期更新系统和软件
  4. 配置SSL/TLS加密
  5. 限制NGINX和PM2的权限

性能调优建议

  1. 根据服务器CPU核心数调整PM2实例数(-i max会自动根据核心数创建)
  2. 监控服务器资源使用情况调整NGINX worker_processes
  3. 考虑启用NGINX缓存静态内容
  4. 对于高流量网站,考虑启用NGINX的微缓存功能

通过以上配置,您的VPS服务器将能够更高效地处理并发请求,实现更好的负载均衡和性能优化。