温馨提示×

nginx在debian如何负载均衡

小樊
36
2026-10-24 03:12:41
栏目: 云计算

在 Debian 上使用 Nginx 做负载均衡,本质是利用 Nginx 的 upstream 模块 把请求转发到多个后端服务器。下面按“安装 → 配置 → 常用策略 → 验证”来讲。


一、安装 Nginx(Debian)

sudo apt update
sudo apt install nginx -y

启动并设置开机自启:

sudo systemctl enable nginx
sudo systemctl start nginx

二、基本负载均衡配置(反向代理 + upstream)

假设:

  • 负载均衡服务器:192.168.1.10(Nginx)
  • 后端服务器:
    • 192.168.1.20:8080
    • 192.168.1.21:8080

1️⃣ 编辑 Nginx 配置

sudo nano /etc/nginx/conf.d/loadbalancer.conf

2️⃣ 示例配置(轮询,默认)

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;
    }
}

3️⃣ 检查并重启

sudo nginx -t
sudo systemctl reload nginx

三、常见负载均衡策略

1️⃣ 轮询(默认)

upstream backend {
    server 192.168.1.20:8080;
    server 192.168.1.21:8080;
}

2️⃣ 加权轮询

upstream backend {
    server 192.168.1.20:8080 weight=3;
    server 192.168.1.21:8080 weight=1;
}

3️⃣ IP Hash(会话保持)

upstream backend {
    ip_hash;
    server 192.168.1.20:8080;
    server 192.168.1.21:8080;
}

4️⃣ least_conn(最少连接)

upstream backend {
    least_conn;
    server 192.168.1.20:8080;
    server 192.168.1.21:8080;
}

四、健康检查(Nginx 免费版)

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 会暂时剔除该节点


五、HTTPS 负载均衡(示例)

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

多次访问,观察是否切换到不同后端。


七、可选增强

  • ✅ Nginx Plus(商业版):主动健康检查、状态页面
  • ✅ Keepalived + Nginx(高可用)
  • ✅ Prometheus + Nginx Exporter(监控)

如果你有 具体场景(如 WebSocket、Docker、K8s、HTTPS、Session 保持),我可以给你更针对性的配置。

0 踩