← 返回首页

Nginx 负载均衡配置实践

当单台应用服务器无法承载全部请求时,可以使用 Nginx 将流量分发到多个后端节点。Nginx 的 upstream 模块提供了简单可靠的负载均衡能力,适合中小规模业务的入口层部署。

一、基础 upstream 配置

upstream app_servers {
    server 10.0.0.11:8080;
    server 10.0.0.12:8080;
    server 10.0.0.13:8080;
}

server {
    listen 80;
    server_name www.example.com;

    location / {
        proxy_pass http://app_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

默认情况下,Nginx 使用轮询方式将请求分发给多个节点。

二、权重分配

如果不同服务器配置不同,可以通过 weight 参数控制流量比例:

upstream app_servers {
    server 10.0.0.11:8080 weight=3;
    server 10.0.0.12:8080 weight=1;
}

上面的配置中,第一台服务器大约承担三倍于第二台服务器的请求量。

三、故障处理与备用节点

可以使用 max_failsfail_timeout 控制失败判定,也可以设置备用节点:

upstream app_servers {
    server 10.0.0.11:8080 max_fails=3 fail_timeout=30s;
    server 10.0.0.12:8080 max_fails=3 fail_timeout=30s;
    server 10.0.0.99:8080 backup;
}

当主节点不可用时,backup 节点才会参与请求处理。

四、简单灰度发布思路

灰度发布可以通过较低权重将少量流量导入新版本服务:

upstream app_servers {
    server 10.0.0.11:8080 weight=9; # 稳定版本
    server 10.0.0.12:8080 weight=1; # 新版本
}

观察新版本日志和业务指标稳定后,再逐步提高权重。

五、实践建议