# 健康检查与故障转移

URL: https://caijiao.org/nginx/health-check
Source: docs/nginx/health-check.md
Description: 本节介绍 Nginx 的健康检查与故障转移机制，包括 upstream 健康监控、备用服务器配置、自动切换策略以及最佳实践，保证高可用 Web 服务。

在高可用架构中，Nginx 可以通过健康检查和故障转移保证请求始终路由到可用后端，提高服务稳定性。

## 一、upstream 健康检查

Nginx 原生 `ngx_http_upstream_module` 提供基本健康检测，通过 `max_fails` 和 `fail_timeout` 控制失败重试：

```nginx
upstream backend {
    server 192.168.1.101 max_fails=3 fail_timeout=30s;
    server 192.168.1.102 max_fails=3 fail_timeout=30s;
    server 192.168.1.103 backup;
}
````

### 参数说明

* **max_fails**：最大失败次数
* **fail_timeout**：超过次数后，服务器在该时间段内标记为不可用
* **backup**：备用服务器，当主服务器不可用时接管请求

## 二、故障转移机制

1. 主服务器连续失败达到 `max_fails`，Nginx 自动切换到可用服务器
2. 当备用服务器可用时，流量自动转发
3. 可结合 `proxy_next_upstream` 配置进一步控制失败重试策略

```nginx
location / {
    proxy_pass http://backend;
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
```

### 常用参数说明

* **proxy_next_upstream**：指定何种错误情况下尝试下一个后端
* **timeout**：请求超时自动切换

## 三、最佳实践

1. 对关键服务配置多个后端，保证高可用
2. 定期监控 upstream 服务器健康状态
3. 将备用服务器设置为 backup，避免不必要负载
4. 日志分析失败原因，优化负载均衡策略

---

通过健康检查与故障转移机制，Nginx 可以在后端服务器出现故障时自动切换，保障 Web 服务的高可用性和稳定性。
