如何在 Nginx 中配置负载均衡?

描述了在 Nginx 中配置负载均衡的步骤,包括定义服务器组和使用不同的负载均衡算法。

部署与运维 中等 负载均衡 Nginx 配置

在 Nginx 中配置负载均衡涉及定义后端服务器组和应用负载均衡算法,以分发客户端请求。基于参考资料,主要步骤如下:

  1. 在配置文件(例如 nginx.conf)中定义后端服务器组(upstream block): 指定一组后端服务器及其地址(IP/域名),可选择设置权重或端口。默认使用轮询算法。
    upstream backend {
        server backend1.example.com;         # 服务器域名或IP地址
        server 192.168.1.10:8080 weight=2; # 权重为2,请求概率加倍
        server 192.168.1.11:8080;          # 默认权重为1
    }
    

    说明:Nginx 通过 upstream 模块标识后端服务器组。weight 实现加权轮询(加权轮询),指定服务器的负载权重(权重越高接收请求越多)。

  2. 在配置的 location 块中引用后端服务器组,作为反向代理: 应用 upstream 名称作为代理目标,支持七层负载均衡(HTTP 请求分发)。
    server {
        listen 80;
        server_name myapp.com;
    
        location / {
            proxy_pass http://backend; # 引用 upstream 组名
        }
    }
    

    说明:客户端请求由 Nginx 作为反向代理接收,再根据负载均衡策略转发到特定后端服务器。

  3. 应用不同负载均衡算法(非指令指定即可启用)
    • 轮询(Round Robin):默认算法,轮流分发请求,适合服务器性能相当。
       upstream backend { server host1; server host2; } # 无需额外参数
      
    • 最少连接数(Least Connections):请求分发给当前连接数最少的服务器,减轻服务器压力。
       upstream backend { least_conn; server host1; server host2; }
      
    • IP 哈希(IP Hash):基于客户端 IP 哈希计算结果指定唯一后端服务器,适用于会话保持(session affinity)。
       upstream backend { ip_hash; server host1; server host2; }
      

      说明:Nginx 支持多种内置策略算法以减少单点过载(最少连接数),但注意会话一致性可能需要手动实现。如未指定策略函数,默认为轮询。

  4. 配置额外的选项以提高部署稳定性
    • 参数 max_fails 定义尝试访问服务器失败次数上限后临时标记为不可用。
       server 192.168.1.10:8080 weight=1 max_fails=3; # 定义可接受访问失败三次上限
      
    • 参数 fail_timeout 定义重新检查故障服务器的时间间隔(默认 10s)。 配置项支持添加被动健康检查能力处理故障移除问题。
      server backend2.example.com max_fails=3 fail_timeout=30s; # 设定服务器超时规则
      

最终完成后,重新加载 Nginx 来生效配置:

sudo nginx -t    # 测试配置文法正确,避免出错导致生产瘫痪
sudo nginx -s reload # 在不终止当前连接的机制下应用新修改生效 

注:Nginx 负载均衡工作在传输或内容层保证高吞吐低延迟业务运行可靠性。以上提供简单使用配置范例(代码块实现指令结构)实现扩展性处理入口方案提升效率部署实战运维流程模型。