# 负载均衡策略

URL: https://caijiao.org/nginx/load-balancing
Source: docs/nginx/load-balancing.md
Description: 本节介绍 Nginx 的负载均衡策略，包括轮询、IP 哈希、最少连接等模式，以及配置示例和优化建议，帮助你实现高可用和高性能 Web 服务。

Nginx 负载均衡通过将客户端请求分发到多个后端服务器，提高服务可用性、扩展性和性能。

## 一、upstream 块配置

```nginx
upstream backend {
    server 192.168.1.101;
    server 192.168.1.102;
    server 192.168.1.103;
}
````

在 server/location 块中引用：

```nginx
server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
    }
}
```

## 二、常用负载均衡策略

### 1. 轮询 (默认)

请求按顺序依次分配给每台服务器。

```nginx
upstream backend {
    server 192.168.1.101;
    server 192.168.1.102;
    server 192.168.1.103;
}
```

### 2. 权重轮询

根据服务器权重分配请求，性能更强的服务器可以处理更多请求。

```nginx
upstream backend {
    server 192.168.1.101 weight=3;
    server 192.168.1.102 weight=1;
}
```

### 3. IP 哈希

同一客户端 IP 始终访问同一台服务器，适用于会话保持。

```nginx
upstream backend {
    ip_hash;
    server 192.168.1.101;
    server 192.168.1.102;
}
```

### 4. 最少连接 (least_conn)

将请求分配给当前连接数最少的服务器，适合请求耗时不均匀的场景。

```nginx
upstream backend {
    least_conn;
    server 192.168.1.101;
    server 192.168.1.102;
}
```

## 三、优化与健康检查

1. **健康检查**：使用 `ngx_http_upstream_module` 或第三方模块检测后端健康
2. **备用服务器**：`server 192.168.1.104 backup;` 当主服务器不可用时接管请求
3. **连接超时与重试**：`proxy_connect_timeout`, `proxy_read_timeout`, `proxy_next_upstream`
4. **日志分析**：记录 upstream 请求状态，优化负载分配

---

通过合理配置 Nginx 负载均衡策略，可以提高网站高并发访问性能，实现高可用和稳定服务。
