Nginx 通过 upstream、健康检查、keepalive 连接复用及 graceful reload 实现平滑转发:配置 least_conn/ip_hash、max_fails、slow_start 实现智能负载与渐进上线;启用 HTTP/1.1 长连接降低后端压力;reload 时新旧 worker 并存确保零中断;结合合理超时与重试策略防止雪崩。

Nginx 的 proxy_pass 本身不直接提供“平滑转发”能力,但配合 upstream、健康检查、连接复用等机制,可以实现请求无中断、无丢包的平稳转发。关键在于避免后端切换时的连接中断和请求堆积。
合理配置 upstream 实现负载均衡与故障转移
将后端服务定义为 upstream 块,是实现平滑转发的基础。Nginx 会自动在多个节点间分发请求,并在某个节点不可用时跳过它,而不是立即报错。
- 使用
least_conn或ip_hash策略,减少单点压力突增 - 设置
max_fails=1 fail_timeout=10s,让 Nginx 快速感知异常并临时剔除节点 - 添加
slow_start=30s(Nginx 1.15.10+),新上线节点逐步接收流量,避免冷启动冲击
启用 keepalive 复用连接,降低后端压力
默认情况下,Nginx 每次请求都新建 TCP 连接,频繁建连会加重后端负担,也影响响应延迟。开启长连接可显著提升吞吐并减少抖动。
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
- 在 upstream 中配置
keepalive 32;(保持最多 32 个空闲连接) - 在 location 中添加
proxy_http_version 1.1;和proxy_set_header Connection '';,确保 HTTP/1.1 长连接生效 - 避免设置过大的 keepalive 值,防止连接长时间闲置占用后端资源
配合 graceful reload 实现零停机更新
Nginx 自身支持热重载配置,这是实现真正平滑的关键一环。新 worker 进程启动后,旧进程会继续处理已有连接,直到全部完成才退出。
- 修改配置后执行
nginx -t && nginx -s reload,不中断任何活跃请求 - 若 upstream 中新增或删除了服务器,reload 后流量会自然过渡,旧连接仍走原路径,新连接按新配置分发
- 可通过
nginx -s quit安全停止,确保所有请求处理完毕再退出
补充:超时与重试策略防止雪崩
单纯转发不设限,容易因后端响应慢导致连接堆积,最终拖垮 Nginx 或上游服务。
-
proxy_connect_timeout 5s;控制建连超时,避免卡在 TCP 握手 -
proxy_send_timeout 30s;和proxy_read_timeout 30s;防止大文件上传或慢查询阻塞 worker - 谨慎使用
proxy_next_upstream error timeout http_500;,仅对明确可重试的错误启用,避免重复提交非幂等请求

















