优化 HTTPS 连用率需区分客户端到 Nginx(ssl_session_cache/timeout/tickets)与 Nginx 到后端(proxy_ssl_session_reuse+keepalive)两层复用,配置位置、机制及验证方式均不同,混用会导致调优失效。

优化 Nginx 的 HTTPS 连接复用率,核心不是堆参数,而是分清两层复用:客户端到 Nginx 的 TLS 复用,以及 Nginx 到后端服务的 HTTPS 连接复用。两者机制不同、配置位置不同、验证方式也不同,混为一谈反而会调错方向。
客户端直连 Nginx 的 TLS 复用(前端连接)
这是用户浏览器与 Nginx 之间建立 HTTPS 连接时的复用,目标是减少完整 TLS 握手次数,降低首屏延迟和服务器 CPU 开销。
- 必须在 http 块顶层 配置共享缓存:
ssl_session_cache shared:SSL:10m;—— 名称 SSL 要统一,10m 可支撑约 4 万个会话;放 server 块里等于无效 - 搭配合理超时:
ssl_session_timeout 10m;—— 页面类业务推荐 10–20 分钟;移动端或长连接 API 可设 30 分钟;过短易失效,过长占内存且无实际收益 - 启用 Session Ticket 双保险:
ssl_session_tickets on;并指定密钥:ssl_session_ticket_key /etc/nginx/ssl/ticket.key;—— 客户端自行携带加密票据,不依赖服务端查缓存,对 TLS 1.2 兼容性至关重要 - 日志中用
$ssl_session_reused统计真实复用率(r=复用,.=新建),别依赖$ssl_session_id——它只表示客户端“带了 ID”,不代表成功复用
Nginx 代理到后端 HTTPS 服务的连接复用(后端连接)
这是 Nginx 作为反向代理,发请求给上游 HTTPS 接口(如微服务、SaaS 后端)时的复用,重点在跳过 TLS 握手+复用 TCP 连接。
- 必须在 upstream 块中 启用:
proxy_ssl_session_reuse on;—— 单独写在 http 或 location 里不生效 - 搭配连接池:
keepalive 32;(每个 worker 缓存 32 条空闲连接),并强制协议版本:proxy_http_version 1.1;和清除连接头:proxy_set_header Connection ''; - 确保后端支持会话恢复:自身需开启
ssl_session_cache和ssl_session_timeout,且不能频繁轮换 ticket 密钥或关闭 session tickets - 日志中用
$upstream_ssl_session_reused监控(值为 r 才算真正复用),配合ss -tnp观察 ESTABLISHED 连接数是否稳定在 keepalive 设定值附近
别踩这些常见坑
很多配置看似正确,实则互相干扰,导致复用率上不去。
-
keepalive_timeout不管 TLS 复用:它只控制 Nginx 主动关闭空闲 TCP 连接的时间,不影响 session ticket 或 session ID 是否被复用;盲目拉长到 300 秒意义不大,浏览器或中间设备早把连接关了 - 后端用 HTTPS 却没配好会话恢复:比如 Spring Boot 默认禁用 session cache,Nginx 再怎么开
proxy_ssl_session_reuse也没用 - 混用 TLS 版本或密码套件:Nginx 配
proxy_ssl_protocols TLSv1.2;,但后端只支持 TLS 1.3,握手失败,自然无法复用 - 忽略客户端行为:Chrome 默认 6 分钟断连,iOS Safari 更短;你的
ssl_session_timeout设再高,也得看浏览器愿不愿意等
验证比配置更重要
调完不能只看 reload 成功,要从三个层面交叉验证:
- 命令行测试:
openssl s_client -connect example.com:443 -reconnect -servername example.com | grep "Reused"—— 出现 Reused 表示客户端侧复用成功 - 抓包确认:Wireshark 过滤目标端口,复用成功时 TLS 握手应只有 Change Cipher Spec + Finished,而非完整的 ClientHello→ServerHello 流程
- 日志统计:用 awk 对
$ssl_session_reused或$upstream_ssl_session_reused字段做聚合,复用率低于 70% 就该继续排查链路


















