nginx高可用依赖upstream块实现,proxy_pass仅作转发;upstream定义后端池并支持被动健康检查、backup备用节点及least_conn等负载策略,主动检查需额外模块。

在 Nginx 中,proxy_pass 本身不提供高可用能力,真正实现服务冗余和故障自动剔除的是 upstream 块。两者配合使用,才能构建具备容错能力的反向代理集群。
upstream 是高可用的核心载体
upstream 定义一组后端服务器池,Nginx 会按策略分发请求,并在运行时主动探测健康状态。关键点在于:
- 必须把后端地址写在
upstream块里,而不是直接写进proxy_pass - 每个 server 可配置
max_fails和fail_timeout,控制连续失败多少次后标记为不可用、多久后重试 - 支持
backup标记备用节点,仅当所有主节点失效时才启用 - 默认启用被动健康检查(基于请求失败统计),无需额外模块
proxy_pass 指向 upstream 名称而非具体地址
在 location 或 server 块中,proxy_pass 的值应为 http:// + upstream 名称,例如:
upstream backend_cluster {
server 192.168.1.10:8080 max_fails=3 fail_timeout=30s;
server 192.168.1.11:8080 max_fails=3 fail_timeout=30s;
server 192.168.1.12:8080 backup;
}
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
server {
listen 80;
location / {
proxy_pass http://backend_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
搭配负载均衡策略提升稳定性
默认轮询适合均质节点,但实际场景建议显式指定更稳健的策略:
- least_conn:适用于长连接或响应时间差异大的服务,避免某台机器堆积过多连接
- ip_hash:需会话保持时可选,但注意它不解决单点故障,仅保证同一 IP 固定路由
-
加权轮询(weight):给性能强的机器更高权重,如
server 192.168.1.10:8080 weight=3;
补充主动健康检查(需编译 --with-http_upstream_check_module)
如果需要更及时发现宕机(比如进程僵死但端口仍通),可启用主动探活:
- 在 upstream 块中添加
check interval=3 rise=2 fall=5 timeout=1 - 配合
check_http_send和check_http_expect_alive自定义探测请求与成功判定 - 该功能非 Nginx 开箱即用,需确认安装版本是否包含该模块










