如何配置Nginx实现负载均衡?

Nginx可以通过upstream模块实现负载均衡。我们可以将多个服务器组成一个集群,Nginx会根据策略将请求分发到不同的服务器上。

upstream块配置 Syntax:

upstream name {
    server address1 [params]; 
    server address2 [params];
    ...
}
  • name:任意名称,用来标识upstream集群
  • address:可以是IP地址或域名
  • params:可选,指定服务器其他参数,如 weight 权重 等

负载均衡策略:

  • Round Robin(默认):按顺序循环的方式分发请求到不同服务器。
  • Weight:根据服务器的权重值分发请求,权重值越高分发的请求越多。
  • Ip Hash:根据客户端IP的哈希结果分发请求,同一个IP的请求会分发到同一服务器。
  • Least Conn:将请求分发到最少连接的服务器。

配置示例:

# 定义服务器集群
upstream myapp {
    server 10.10.10.11;
    server 10.10.10.12 weight=2;  # 权重较高
    server 10.10.10.13 max_fails=3 fail_timeout=30s; 
} 

# 负载均衡的服务器列表
server {
    location / {
        proxy_pass http://myapp;  # 代理到上面定义的服务器集群
    }
}

上例定义了一个myapp服务器集群,包含3台服务器:

  • 10.10.10.11 权重默认为1
  • 10.10.10.12 权重为2,负载较高
  • 10.10.10.13 max_fails=3 fail_timeout=30s 指定最大失败次数和失败超时

server块使用proxy_pass将请求代理到upstream集群,以实现负载均衡。