必须配齐proxy_http_version 1.1、proxy_set_header Connection ''和upstream keepalive三项配置,缺一不可;否则连接无法复用,后端仍频繁建连断连。

安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
要让 Nginx 真正激活与后端之间的 HTTP/1.1 原生连接池长连接机制,不能只改一个参数——proxy_http_version 1.1 是启动开关,但必须和另外两个动作严格配合,否则连接仍会每次新建、立即断开。
必须显式声明 HTTP/1.1 协议版本
Nginx 默认用 HTTP/1.0 向上游服务器发起代理请求。HTTP/1.0 不定义持久连接语义,即使客户端带了 Connection: keep-alive,Nginx 也不会转发该头,也不会保留连接。
只有加上这行配置,Nginx 才会:
- 在发往后端的请求中主动带上 Connection: keep-alive
- 正确解析后端返回的 Keep-Alive: timeout=60, max=100 响应头
- 把空闲连接交还给 upstream 连接池,而不是直接 close
必须清空透传的 Connection 请求头
客户端可能带 Connection: close 或其他非法值,若原样转发,后端会立刻断连。
正确做法是:
- 在 location 或 server 块中添加:proxy_set_header Connection "";
- 注意引号内是空字符串,不是 "keep-alive",也不是省略不写
- 这一步让 Nginx 自主控制连接生命周期,不再受客户端头干扰
必须在 upstream 块中启用 keepalive 连接池
光有协议和头部还不够,得有“地方”存住复用的连接:
- 在 upstream 定义里加:keepalive 32;(建议从 32 起步,高并发可调至 64 或 128)
- 它表示:每个 worker 进程最多为该后端缓存 32 个空闲长连接
- 若有 4 个 worker,实际最多可复用 128 条连接(不是全局总数,也不跨后端)
额外确认项(容易被忽略)
确保后端服务本身支持并启用了 keep-alive:
- Tomcat 需检查 connectionTimeout 是否非零,且未禁用 keepAlive
- Node.js http.Server 默认支持,但需确认未设置 server.keepAliveTimeout = 0
- Spring Boot 应用若用内嵌 Tomcat,可通过 server.tomcat.connection-timeout 控制
- 可用 ss -tnp | grep :<port></port> 观察 ESTAB 连接数是否稳定,而非持续波动

















