在 Debian 上用 Node.js 做负载均衡,常见做法有 应用层(Node 自身) 和 系统/服务层(反向代理) 两类。下面按实战角度给你一个清晰方案。
假设你的 Node 应用监听不同端口:
node app.js --port 3000
node app.js --port 3001
node app.js --port 3002
或用 PM2(推荐):
npm install -g pm2
pm2 start app.js -i 4 # 4 个进程
sudo apt update
sudo apt install nginx
编辑配置:
sudo nano /etc/nginx/sites-available/node-lb
示例(轮询):
upstream node_cluster {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
server 127.0.0.1:3002;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://node_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
启用:
sudo ln -s /etc/nginx/sites-available/node-lb /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
✅ 优点:简单、稳定、生产级
upstream node_cluster {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
}
server 127.0.0.1:3000 weight=3;
server 127.0.0.1:3001 weight=1;
upstream node_cluster {
ip_hash;
server 127.0.0.1:3000;
server 127.0.0.1:3001;
}
least_conn;
适合单台服务器多核:
const cluster = require('cluster');
const os = require('os');
if (cluster.isMaster) {
os.cpus().forEach(() => cluster.fork());
} else {
require('./app');
}
⚠️ 只能本机,不能跨服务器
upstream node_cluster {
server 192.168.1.10:3000;
server 192.168.1.11:3000;
}
sudo apt install haproxy
proxy_http_version 1.1如果你愿意,可以告诉我:
我可以直接给你一份 可复制的配置。