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集群,以实现负载均衡。