需在http或server块配置ssl_session_cache shared:ssl:10m,并配合ssl_session_timeout、ssl_session_tickets等参数才能启用共享ssl会话缓存;10m缓存约支持5–6万个会话。

要在 Nginx 中启用共享 SSL 会话缓存,需在 http 块中配置 ssl_session_cache shared:SSL:10m,并配合其他必要 SSL 参数才能真正生效。
确保配置位置正确
该指令必须放在 http 块(全局)或 server 块中,不能放在 location 内。推荐优先写在 http 块,供所有 HTTPS server 复用:
- 在
/etc/nginx/nginx.conf的http { ... }区域内添加 - 若只用于某个站点,可写在对应
server { ssl on; ... }块内 - 注意:多个
server共享同一缓存名称(如SSL)时,必须同名且同大小,否则无法真正共享
搭配必需的 SSL 参数
单独设置缓存不会自动启用会话复用,还需明确开启 TLS 会话票据和合理设置超时:
-
ssl_session_timeout 4h;—— 控制缓存条目有效期(默认 5m,建议设长些) -
ssl_session_tickets off;—— 关闭会话票据(避免与共享缓存冲突;若开启则需额外管理密钥) -
ssl_protocols TLSv1.2 TLSv1.3;—— 禁用不安全旧协议 -
ssl_ciphers ...;—— 指定强加密套件(影响握手兼容性)
验证是否生效
配置后重载 Nginx(nginx -t && nginx -s reload),再通过以下方式确认:
- 用
openssl s_client -connect example.com:443 -reconnect连接两次,观察输出中Reused session是否出现 - 检查 Nginx 错误日志是否有
no suitable shared cipher或SSL_do_handshake() failed - 运行
nginx -V 2>&1 | grep -o with-http_ssl_module确认编译时启用了 SSL 模块
10m 缓存空间的实际容量
10m 表示约 10MB 共享内存,Nginx 默认每个会话缓存项约 150–200 字节(含会话 ID、主密钥、时间戳等),理论可存约 5–6 万个会话。实际取决于:
- 启用 OCSP stapling 会略微增加单条开销
- TLS 1.3 的会话票据机制与传统缓存独立,不计入此空间
- 高并发场景下若频繁新建连接,可考虑增大到
50m或分拆为多个命名缓存











