优化Nginx的ssl_session_cache是HTTPS性能提升最直接有效的一环,必须置于http块顶层且仅声明一次,配合shared:SSL:10m(或按HPS×超时×开销精准计算的大小)、ssl_session_timeout 10m、ssl_session_tickets on及密钥轮换,通过$ssl_session_reused统计与openssl测试验证复用率≥75%。

优化 Nginx 的 ssl_session_cache 是 HTTPS 性能提升最直接有效的一环,核心目标是提高会话复用率、减少全量 TLS 握手次数,从而降低延迟(单次可省 50–100ms)和 CPU 消耗。
必须放在 http 块顶层,且只声明一次
shared 缓存依赖进程间共享内存,只有定义在 http { } 最外层才真正生效:
- 写在某个
server块里 → 缓存仅对该域名局部有效,无法跨 worker 进程共享 → 实际复用率趋近于零 - 多个
server中重复配置 → Nginx 静默忽略后续条目,不报错但行为不可控 - 正确写法示例:
http {
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets on;
ssl_session_ticket_key /etc/nginx/ssl/ticket.key;
}
合理设置缓存大小,按真实流量计算
不是看 QPS,而是统计「每秒新建 TLS 会话数(HPS)」,再结合有效会话寿命估算所需槽位:
安全地重置 OpenClaw agent sessions,支持备份、预览、恢复和批量操作。用于:1) 清理过期的 agent 会话上下文,2) 重置特定 agents 的 session,3) 批量重置六部/秘书 sessions,4) 查看和恢复历史备份。当用户需要"reset session"、"清理 se...
- OpenSSL 1.1.1+ 约占用 144 字节/槽;若启用 OCSP Stapling 或长证书链,单槽开销升至 2–3 KB
- 保守估算公式:缓存大小(MB)≈ HPS × 超时(秒) × 单槽字节数 ÷ 1024 ÷ 1024
- 常见参考值:
• 普通静态站点(HPS ≤ 100)→shared:SSL:5m起步
• 前端资源服务或 CDN 源站(HPS ≥ 500)→ 建议shared:SSL:20m或更高
• 十万级并发(实测峰值约 1800 HPS,有效寿命 120 秒)→ 推荐起步配shared:SSL:48m
搭配关键参数,形成完整复用闭环
仅靠 shared 缓存不够,需组合使用以下配置保障高负载下的稳定性:
-
ssl_session_timeout 10m:比默认 5m 更利于页面子资源复用;过长(如 4h)易占满内存且增加泄露风险 -
ssl_session_tickets on:启用 RFC 5077 票据机制,客户端携带加密票据,服务端无状态恢复,缓解突发流量压力 -
ssl_session_ticket_key必须是二进制文件(至少 32 字节),建议每月轮换:生成新 key 后 reload Nginx,旧票据仍可解密复用 - 禁用
builtin:每个 worker 自维护小缓存,请求随机分发后基本无法命中
验证是否真正生效,不能只看配置加载
光写对配置不等于跑对效果,必须通过多维度确认:
- 检查配置是否被识别:
nginx -T | grep "ssl_session_cache.*shared",输出应唯一且匹配预期 - 日志中启用
$ssl_session_reused变量,统计复用率(理想值 ≥ 75%) - 用 OpenSSL 手动测试:
openssl s_client -connect example.com:443 -reconnect,观察是否出现Reused, SSL_SESSION_ID - 监控
ssl_handshake_time分布,复用后应集中在毫秒级,而非百毫秒级

















