proxy_ssl_session_reuse on 必须在upstream块中配置才生效,需配合keepalive、HTTP/1.1升级及TLS版本一致等策略,否则复用失败;错误置于location等层级将被忽略。

开启 proxy_ssl_session_reuse on 能直接跳过大部分 TLS 握手步骤,将每次建连的 CPU 密钥计算、证书验证等开销大幅削减,实测可降低 Nginx 与 HTTPS 后端之间 TLS 层 CPU 消耗 30%–50%。但它不是独立生效的开关,必须在正确位置配置,并与后端能力、连接策略和协议参数严格对齐。
必须放在 upstream 块中才真正起作用
该指令仅在 upstream 上下文有效,写在 http、server 或 location 块里会被忽略——语法不报错,但实际不生效。
- ✅ 正确写法(在 upstream 内):
upstream api_backend {<br> server 10.0.1.20:443;<br> keepalive 32;<br> proxy_ssl_session_reuse on;<br>} - ❌ 错误写法(常见失效原因):
location /api {<br> proxy_pass https://api_backend;<br> proxy_ssl_session_reuse on; <!-- 此处无效 --><br>}
配套三项基础配置缺一不可
CPU 节省依赖复用真实发生,而复用的前提是连接能持续存在、协议能协商一致、会话参数可被识别。
使用 Playwright 为 jimeng.jianying.com 管理浏览器会话,导入 cookies/localStorage 以自动化视频生成工作流,支持图片上传等功能
-
启用长连接池:在 upstream 中设置
keepalive 32;(建议 16–64),让每个 worker 进程缓存空闲 HTTPS 连接,为复用提供载体 -
强制 HTTP/1.1 + 禁止 Connection close:在 location 或 proxy 相关块中添加
proxy_http_version 1.1;<br>proxy_set_header Connection '';
避免后端因收到Connection: close主动断连,导致连接无法复用 -
统一 TLS 协议与加密套件:在 upstream 或 http 块中显式限定
proxy_ssl_protocols TLSv1.2 TLSv1.3;<br>proxy_ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
版本或套件不匹配会强制完整握手,CPU 开销立即回升
后端必须支持并稳定提供会话恢复
Nginx 复用的是后端返回的会话票据(Session Ticket)或 Session ID,若后端未启用、缓存过期或密钥不一致,复用即中断。
- 后端需开启会话缓存(如 Nginx 后端):
ssl_session_cache shared:SSL:10m;<br>ssl_session_timeout 4h;
避免设为30s等过短值,否则 Nginx 尚未复用,缓存已清空 - 多实例后端启用 session ticket 时,所有节点必须共享同一密钥:
ssl_session_ticket_key /etc/nginx/ticket.key;
否则票据无法解密,Nginx 只能新建会话 - 后端证书应稳定——频繁轮换证书会导致已有票据失效,复用率骤降
避免证书校验干扰复用过程
若开启 proxy_ssl_verify on,但后端证书链不完整、域名不匹配或 OCSP 响应异常,Nginx 会在复用前重新执行完整校验,失败则丢弃缓存会话,退化为新建握手。
- 调试阶段可临时关闭:
proxy_ssl_verify off;<br>proxy_ssl_trusted_certificate /path/to/ca-bundle.crt;
生产环境请确保证书链完整、SNI 正确、OCSP Stapling 已启用 - 若使用多域名共 IP 的后端,务必开启 SNI 传递:
proxy_ssl_server_name on;
否则后端无法选择对应证书,复用失败










