Nginx HTTPS高频短连接优化核心是复用与缓存:启用共享内存SSL会话缓存(ssl_session_cache shared:SSL:10m)、HTTP/2+上游长连接、ECDHE密钥交换、OCSP Stapling及精简协议版本。

高频短连接场景下,Nginx 的 HTTPS 性能瓶颈主要集中在 TLS 握手开销、连接频繁重建和后端资源浪费三方面。优化核心不是“堵”,而是“复用”与“缓存”——让安全连接可重用、会话状态可快速恢复、连接生命周期可控。
启用并调优 SSL 会话复用
每次新建 HTTPS 连接都需完整 TLS 握手(尤其是 RSA 或非 ECDSA 场景),耗时可达数百毫秒。必须开启服务端会话缓存:
-
共享内存缓存:在
http块中配置ssl_session_cache shared:SSL:10m;,10MB 可缓存约 4 万会话(按每个会话 256 字节估算),适合日均百万级请求的站点 -
合理设置超时:
ssl_session_timeout 10m;是较优平衡点;过短(如 1m)导致复用率低,过长(如 4h)易占满内存且增加会话泄露风险 -
启用会话票证(可选):
ssl_session_tickets on;将部分会话状态交由客户端保存,减轻服务端压力;但需配合密钥轮换机制(ssl_session_ticket_key)保障前向安全性
强制 HTTP/2 + 长连接透传
短连接本质是客户端行为,但 Nginx 到后端的连接若仍是 HTTP/1.1 短连,会放大问题。关键在于两级连接都要“保活”:
-
对客户端启用 HTTP/2:监听 443 端口时添加
http2参数,例如listen 443 ssl http2;;HTTP/2 天然支持多路复用,单连接并发处理多个请求,大幅降低建连频次 -
上游保持长连接:在
upstream块中配置keepalive 300;(表示最多保留 300 个空闲连接),同时在location中显式设置:proxy_http_version 1.1;proxy_set_header Connection "";
缺少这两行,Nginx 默认以 HTTP/1.0 向后端发起请求,keepalive形同虚设
精简 TLS 协商过程
减少握手往返次数(RTT)和计算开销,直接缩短连接建立时间:
-
优先使用 ECDHE 密钥交换:在
ssl_ciphers中明确指定,例如:ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384;
避免包含DES、RC4、3DES等已淘汰或低效套件 -
启用 OCSP Stapling:
ssl_stapling on;和ssl_stapling_verify on;,让 Nginx 主动获取并缓存证书吊销状态,省去客户端额外查询 OCSP 服务器的 RTT -
关闭不必要协议版本:
ssl_protocols TLSv1.2 TLSv1.3;(禁用 TLSv1.0/1.1),既提升安全性,又减少协议协商分支判断
配套连接与压缩策略
HTTPS 优化不能脱离整体连接管理,需同步收紧前端和传输层:
-
客户端 Keep-Alive 控制:在
http块设keepalive_timeout 15;(比默认 65s 更激进),避免大量僵尸连接堆积;搭配keepalive_requests 500;,限制单连接请求数,防止长连接被滥用 -
Gzip 压缩适度启用:对文本类响应(JSON、HTML、JS、CSS)开启压缩,但避免压缩图片等二进制文件;设置
gzip_min_length 1k;防止小响应压缩后反而增大 -
关闭不必要的响应头:如
Server、X-Powered-By,减少 TLS 记录帧大小,间接提升首字节时间(TTFB)


















