在 Debian 上使用 Nginx 做负载均衡,本质是利用 Nginx 的 upstream 模块 把请求转发到多个后端服务器。下面按“安装 → 配置 → 常用策略 → 验证”来讲。
sudo apt update
sudo apt install nginx -y
启动并设置开机自启:
sudo systemctl enable nginx
sudo systemctl start nginx
假设:
sudo nano /etc/nginx/conf.d/loadbalancer.conf
upstream backend {
server 192.168.1.20:8080;
server 192.168.1.21:8080;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
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 nginx -t
sudo systemctl reload nginx
upstream backend {
server 192.168.1.20:8080;
server 192.168.1.21:8080;
}
upstream backend {
server 192.168.1.20:8080 weight=3;
server 192.168.1.21:8080 weight=1;
}
upstream backend {
ip_hash;
server 192.168.1.20:8080;
server 192.168.1.21:8080;
}
upstream backend {
least_conn;
server 192.168.1.20:8080;
server 192.168.1.21:8080;
}
upstream backend {
server 192.168.1.20:8080 max_fails=3 fail_timeout=10s;
server 192.168.1.21:8080 max_fails=3 fail_timeout=10s;
}
如果后端连续失败 3 次(10 秒内),Nginx 会暂时剔除该节点
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
location / {
proxy_pass http://backend;
}
}
curl http://192.168.1.10
多次访问,观察是否切换到不同后端。
如果你有 具体场景(如 WebSocket、Docker、K8s、HTTPS、Session 保持),我可以给你更针对性的配置。