核心是减少完整握手次数、降低单次计算强度并适配tls复用:启用tlsv1.3(需openssl≥1.1.1/nginx≥1.13.0)、双会话复用(shared缓存+session tickets)、ocsp装订、least_conn负载策略及后端长连接。

优化 Nginx 负载均衡器处理 SSL 加密请求的开销,核心不是提升单次计算速度,而是大幅减少完整握手次数、降低每次握手的计算强度,并让负载策略适配 TLS 复用特性。实测中,合理配置可将 CPU 消耗压降 40%–60%,同时延迟降低 30% 以上。
强制启用 TLS 1.3 并精简密钥交换路径
TLS 1.3 将握手压缩至 1-RTT,废除 RSA 密钥交换,只保留 ECDHE,天然规避高开销私钥解密。它还内置轻量套件(如 TLS_AES_128_GCM_SHA256),无需额外指定 ssl_ciphers。
- 在 http 或 server 块中写:ssl_protocols TLSv1.2 TLSv1.3;(禁用 TLSv1.0/1.1)
- 确保 OpenSSL ≥1.1.1,Nginx ≥1.13.0;旧版本即使配置也无效
- 用 ssl_conf_command 进一步收窄协商范围:
ssl_conf_command Curves X25519:secp256r1;
ssl_conf_command SignatureAlgorithms ecdsa_secp256r1_sha256:rsa_pss_rsae_sha256;
双会话复用机制必须同时开启
仅靠一种复用方式容易失效。共享缓存解决 worker 内复用,Session Tickets 解决跨进程/重启/节点复用,二者形成冗余保障。
- 在 http { } 块顶层配置:ssl_session_cache shared:SSL:20m;(20MB ≈ 8 万个会话)
- ssl_session_timeout 8h;(长连接业务设为 4–8 小时更合理,短连接可调至 5–10 分钟)
- ssl_session_tickets on; 并定期轮换密钥:ssl_session_ticket_key /etc/nginx/ticket.key;
- 若后端也走 HTTPS(如微服务代理),加:proxy_ssl_session_reuse on;
OCSP Stapling 与证书链优化
客户端直连 CA 查询证书状态,常因 DNS 超时或网络抖动阻塞握手。Nginx 主动装订 OCSP 响应,可跳过该步骤,验证耗时下降 50%+。
- 启用并强制验证:ssl_stapling on; ssl_stapling_verify on;
- 指定完整信任链:ssl_trusted_certificate /path/to/fullchain.pem;(必须含中间 CA,不能只放域名证书)
- 配置独立 resolver:resolver 1.1.1.1 8.8.8.8 valid=300s; resolver_timeout 3s;
调整负载策略以匹配 SSL 复用行为
ip_hash 会把同一 IP 长期绑定到固定 worker,导致复用请求扎堆,形成 CPU 热点。而 least_conn 在长连接场景下更均衡,配合 keepalive 可显著缓解连接管理压力。
- 禁用 ip_hash,改用:least_conn;(尤其适合 WebSocket、API 长连接)
- upstream 中启用长连接:keepalive 32;(Nginx 与后端间保持最多 32 个空闲连接)
- 为每个 server 设置健康检查:max_fails=3 fail_timeout=30s;
- 必要时解耦:前置专用 TLS 终结层(如云厂商 LB),Nginx 回源走 HTTP/2,彻底剥离非对称运算











