插件窝 干货文章 如何配置NGINX和PM2实现VPS服务器的反向代理

如何配置NGINX和PM2实现VPS服务器的反向代理

NGINX 配置 sudo 应用 324    来源:    2025-04-11

配置NGINX和PM2实现VPS服务器反向代理指南

1. 准备工作

在开始之前,请确保: - 已拥有一个VPS服务器 - 已安装Node.js环境 - 拥有sudo或root权限

2. 安装必要组件

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

# 安装NGINX
sudo apt install nginx -y

# 安装Node.js和npm
sudo apt install nodejs npm -y

# 安装PM2
sudo npm install -g pm2

3. 配置Node.js应用

假设你的Node.js应用入口文件是app.js

# 启动应用
pm2 start app.js

# 设置开机自启
pm2 startup
pm2 save

4. 配置NGINX反向代理

4.1 创建NGINX配置文件

sudo nano /etc/nginx/sites-available/yourdomain.com

4.2 配置文件内容

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;

    location / {
        proxy_pass http://localhost:3000; # 假设Node应用运行在3000端口
        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.3 启用配置

# 创建符号链接
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/

# 测试NGINX配置
sudo nginx -t

# 重启NGINX
sudo systemctl restart nginx

5. 配置SSL证书(可选但推荐)

使用Let's Encrypt免费SSL证书:

# 安装Certbot
sudo apt install certbot python3-certbot-nginx -y

# 获取证书
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

# 设置自动续期
sudo certbot renew --dry-run

6. 防火墙配置

# 允许HTTP和HTTPS
sudo ufw allow 'Nginx Full'

# 启用防火墙
sudo ufw enable

7. 验证配置

  • 访问你的域名,应该能看到Node.js应用
  • 检查PM2状态:pm2 list
  • 检查NGINX状态:sudo systemctl status nginx

常见问题解决

  1. 502 Bad Gateway错误

    • 确保Node.js应用正在运行:pm2 list
    • 检查应用端口是否与NGINX配置一致
  2. PM2应用崩溃

    • 查看日志:pm2 logs
    • 考虑使用pm2 start app.js --name "myapp" --watch自动重启
  3. NGINX配置错误

    • 测试配置:sudo nginx -t
    • 检查错误日志:sudo tail -f /var/log/nginx/error.log
  4. 端口冲突

    • 检查端口使用:sudo netstat -tulnp
    • 修改Node.js应用或NGINX配置中的端口号

通过以上步骤,你应该已经成功配置了NGINX和PM2实现VPS服务器的反向代理。