温馨提示×

debian nginx怎么负载

小樊
37
2026-10-27 00:52:14
栏目: 智能运维

在 Debian 上用 Nginx 做负载均衡(反向代理 + upstream) 是非常常见的做法。下面按「最常用 → 进阶」给你一个清晰实操指南。


一、安装 Nginx(Debian)

sudo apt update
sudo apt install nginx -y

启动并设置开机自启:

sudo systemctl enable nginx
sudo systemctl start nginx

二、最基础的负载均衡配置(HTTP)

1️⃣ 编辑 Nginx 配置

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

2️⃣ 配置 upstream(后端服务器)

upstream backend {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}

3️⃣ 配置反向代理

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

4️⃣ 检查并重启

sudo nginx -t
sudo systemctl reload nginx

✅ 访问 example.com 就会轮询到 3 台后端服务器。


三、负载均衡策略(常用)

1️⃣ 轮询(默认)

upstream backend {
    server 192.168.1.10;
    server 192.168.1.11;
}

2️⃣ 加权轮询

upstream backend {
    server 192.168.1.10 weight=3;
    server 192.168.1.11 weight=1;
}

3️⃣ 最少连接(推荐)

upstream backend {
    least_conn;
    server 192.168.1.10;
    server 192.168.1.11;
}

4️⃣ IP Hash(会话保持)

upstream backend {
    ip_hash;
    server 192.168.1.10;
    server 192.168.1.11;
}

四、健康检查(基础)

upstream backend {
    server 192.168.1.10 max_fails=3 fail_timeout=30s;
    server 192.168.1.11 max_fails=3 fail_timeout=30s;
}

失败 3 次后,30 秒内不再转发


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

六、常见问题

❓ 后端是 Docker?

server 127.0.0.1:8080;

❓ 想负载 HTTPS 后端?

proxy_pass https://backend;

❓ 想做 TCP 负载?

需要 stream 模块(Nginx Plus 或自行编译)


七、最小可用示例(复制即用)

upstream app {
    least_conn;
    server 10.0.0.1:80;
    server 10.0.0.2:80;
}

server {
    listen 80;
    location / {
        proxy_pass http://app;
    }
}

如果你愿意,可以告诉我:

  • 是 Web / API / WebSocket / TCP?
  • 后端是 Docker / K8s / 物理机?
  • 要不要 HTTPS + 会话保持?

我可以直接给你一份完整可上线配置。

0 踩