这个方案结合了NGINX作为反向代理和负载均衡器,PM2作为Node.js应用进程管理器,部署在VPS上,能够提供高性能、高可用的网站服务。
sudo apt update && sudo apt upgrade -y
# 安装NGINX
sudo apt install nginx -y
# 基础配置示例 (/etc/nginx/sites-available/yourdomain.com)
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_cache_bypass $http_upgrade;
}
}
# 启用配置
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置
sudo systemctl restart nginx
# 安装Node.js和PM2
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs
sudo npm install -g pm2
# 启动Node应用
pm2 start app.js --name "my-app" # 或使用npm脚本: pm2 start npm -- start
# 常用PM2命令
pm2 list # 查看运行中的应用
pm2 logs # 查看日志
pm2 monit # 监控应用
pm2 restart all # 重启所有应用
pm2 save # 保存当前进程列表
pm2 startup # 设置开机自启
# /etc/nginx/nginx.conf 部分优化配置
worker_processes auto; # 自动设置工作进程数
events {
worker_connections 1024; # 每个工作进程的连接数
multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off; # 隐藏NGINX版本信息
# Gzip压缩
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}
# 启动集群模式(利用多核CPU)
pm2 start app.js -i max --name "my-app-cluster"
# 设置防火墙
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
# 安装Fail2Ban防止暴力破解
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# 安装Certbot
sudo apt install certbot python3-certbot-nginx -y
# 获取证书
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
# 设置自动续期
sudo certbot renew --dry-run
日志管理:
/var/log/nginx/
pm2 logs
或 ~/.pm2/logs/
性能监控工具:
htop
- 系统资源监控nmon
- 综合性能监控pm2 monit
- 应用监控备份策略:
502 Bad Gateway错误:
pm2 list
netstat -tulnp | grep node
性能瓶颈:
top
或htop
查看资源使用情况PM2应用崩溃:
pm2 logs
pm2 start app.js --name "my-app" --restart-delay 3000
这套方案能够为中小型网站提供稳定、高效的运行环境,根据实际流量和需求可以进一步扩展和优化。