直接延长ssl_session_timeout本身不能提升二次接入响应速度,必须协同共享缓存(如shared:SSL:20m)、Session Ticket(需开启并轮换密钥)、OCSP Stapling及TLS版本优化;普通网站推荐设10m,复用率可达70%–85%,首字节快80–150ms。

匹配业务连接节奏设 timeout 值
超时值要贴合用户真实重连行为,不是越长越好:
-
普通网站(含手机浏览器):设为
10m(600秒)。覆盖页面刷新、标签切换、短暂离开后返回,实测复用率可达 70%–85%,首字节时间平均快 80–150ms -
移动端 App 或长周期 API:可设
15m–30m。App 保活强、网络切换频繁,稍长窗口更适配唤醒后请求 -
内网网关或可信微服务调用:推荐
4h(14400秒)。环境稳定、调用方固定,单客户端一天基本只需一次完整握手 -
金融/政务类高敏登录页:保持
5m–10m。安全优先,缩短会话泄露影响窗口
必须配足共享缓存容量
`ssl_session_timeout` 只管“保留多久”,不管“能存多少”。缓存太小,条目还没过期就被挤掉,复用率反降:
- 必须用
shared:SSL:20m或更高(如shared:SSL:50m),禁用builtin——后者不跨 worker,生产环境无效 - 20MB 共享内存约支持 8–10 万个会话;高流量站点建议起步 30m~50m
- 避免“timeout 长 + cache 小”组合,例如设了 20m 却只配 5m 缓存,会导致频繁淘汰抖动
同步启用并管理 Session Ticket
Chrome v119+、Safari、Firefox 等主流浏览器已默认禁用 Session ID,转向 TLS Session Ticket 复用。此时 `ssl_session_timeout` 对 ticket 解密无直接影响:
- 务必开启
ssl_session_tickets on; - 配置
ssl_session_ticket_key,并至少每 24 小时轮换一次密钥,保障前向安全 - 若主要服务新浏览器,
ssl_session_timeout可适当调低至4m–8m,重点转向 ticket 密钥管理
别漏掉 OCSP Stapling 和协议清理
即使会话成功复用,若证书吊销状态要等客户端自己查 OCSP,握手仍会阻塞:
- 启用
ssl_stapling on;和ssl_stapling_verify on; - 配置可靠 DNS 解析器:
resolver 8.8.8.8 valid=300s; - 禁用 TLS 1.0/1.1,强制使用 TLS 1.2+,减少协商开销
验证是否真起作用
改完配置不能只看语法正确,要观测真实连接行为:
- 日志中加入
$ssl_session_reused变量,统计r(复用)与.(新建)比例,目标 ≥ 70% - 命令行测试:
openssl s_client -connect example.com:443 -reconnect,观察输出是否高频出现Reused, SSL handshake succeeded - 用 APM 或 eBPF 工具对比调优前后 TLS 握手耗时,下降 15% 以上才算落地


















