启用 upstream 块中 proxy_ssl_session_reuse on 并配齐 keepalive、http/1.1 长连接、sni 透传和 tls 版本对齐,可实现后端 https 建连仅需 1 rtt,实测延迟降 30%+、cpu 降约 1/3。

直接在 upstream 块里启用 proxy_ssl_session_reuse on,再配齐 keepalive、HTTP/1.1 长连接、SNI 传递和 TLS 版本对齐,就能把后端 HTTPS 建连压到 1 RTT,实测延迟降 30%+、CPU 降约 1/3——这才是双机热备硬件真正能跑出的性能上限。
upstream 必须开启 SSL 会话复用
这个指令只在 upstream 上下文生效,写在 server 或 location 里完全无效:
- ✅ 正确写法:在 upstream 块内加 proxy_ssl_session_reuse on;
- ❌ 错误写法:在 proxy_pass 所在的 location 里加这行,Nginx 会静默忽略
- 注意 upstream 中每个 server 地址必须是 https:// 开头(如
https://192.168.1.10:443),否则 Nginx 当作 HTTP 处理,复用机制不触发
配套三项配置一个都不能少
单独开 session reuse 几乎没效果,它依赖底层连接与 TLS 上下文稳定复用:
- 维持连接池:upstream 内设 keepalive 32;(建议值 16–64,按单 worker 并发量 1.5–2 倍估算)
- 强制长连接:在对应 location 中加 proxy_http_version 1.1; 和 proxy_set_header Connection '';
- 透传 SNI:若后端是多域名共 IP 的云服务或网关,必须加 proxy_ssl_server_name on;,否则证书匹配失败,复用立即中断
双机热备下的关键细节调优
两台后端机器不是简单堆叠,要让它们真正协同榨干硬件能力:
- TLS 版本必须交集:比如后端只支持 TLSv1.3,Nginx 就得配
proxy_ssl_protocols TLSv1.2 TLSv1.3;;只写 TLSv1.2 必然握手失败 - 后端需真实支持会话恢复:Spring Boot 默认开启,但 Tomcat 要显式设
sessionCacheSize;Nginx 后端则要配ssl_session_cache shared:SSL:10m和ssl_session_timeout 300s - 证书链要完整可验证:启用
proxy_ssl_verify on时,自签名证书或缺失中间 CA 会导致握手直接失败;调试阶段可用proxy_ssl_verify off+proxy_ssl_trusted_certificate快速定位
避免双机变“单点”陷阱
看似双机,实际流量全打到一台,常见于配置失衡:
- 禁用轮询,改用 least_conn:双机性能不均时,连接数少的节点优先承接新请求,防止单台过载拖垮整体
- 权重合理分配:高配机器设
weight=3,普通机器用默认weight=1,别让低配机承担同等流量 - 健康检查不能只靠被动重试:在 upstream 中加 health_check interval=3 fails=2 passes=2;,主动探活,挂了立刻隔离,不等请求打满才反应











