优化 nginx https 服务对后端响应速度的核心是减少 tls 开销、缩短 ttfb、避免往返延迟并高效透传请求;需启用 http/2、共享 ssl 会话缓存、ocsp stapling,调小 ssl_buffer_size 至 4k,禁用旧协议,精简 cipher 并关闭 session tickets。

优化 Nginx HTTPS 服务对后端应用的响应速度,核心在于减少 TLS 层开销、缩短首字节时间(TTFB)、避免不必要的往返延迟,并确保请求能高效透传到后端。重点不是压榨 CPU 或带宽,而是让每次 HTTPS 请求从用户发起,到后端返回数据、再到用户收到第一个字节的过程尽可能轻量、快速。
启用 HTTP/2 并合理配置监听
HTTP/2 能显著降低多资源请求的排队和阻塞,尤其对含多个 API 调用的单页应用效果明显。它复用 TCP 连接、支持头部压缩和服务器推送(可选),直接减少延迟。
- 确认 Nginx 版本 ≥ 1.9.5,OpenSSL ≥ 1.0.2
- 将监听行改为:
listen 443 ssl http2; - 避免混用 HTTP/1.1 和 HTTP/2 的 server 块,否则可能触发协议降级
- 不建议盲目开启
http2_push,除非明确需要预加载静态资源;对纯 API 场景无益,反而增加负担
精简 TLS 握手路径
TLS 握手是 HTTPS 延迟的主要来源,尤其是首次连接。优化目标是让握手尽量在 1–2 个往返内完成,并复用已有会话。
- 启用共享 SSL 会话缓存:
ssl_session_cache shared:SSL:50m;(约支持 20 万并发会话) - 设合理超时:
ssl_session_timeout 4h;,兼顾复用率与内存安全 - 禁用已淘汰协议:
ssl_protocols TLSv1.2 TLSv1.3;(彻底移除 TLSv1.0/TLSv1.1) - 关闭 session tickets:
ssl_session_tickets off;(Nginx 对其支持不完善,且有安全顾虑) - 启用 OCSP Stapling:
ssl_stapling on; ssl_stapling_verify on;,避免客户端自行验证证书导致不可控延迟
调小 SSL 缓冲区并优化 Cipher 顺序
默认 16KB 的 ssl_buffer_size 适合大文件传输,但对 API 或网页首屏渲染会造成明显 TTFB 拖延——数据要攒够才发,用户得等。
- 对 REST API 或 Web 应用,设为
ssl_buffer_size 4k;或尝试2k(实测多数场景 4k 最平衡) - 把更高效、硬件加速支持好的 Cipher 放前面,例如优先选
ECDHE-ECDSA-AES128-GCM-SHA256、ECDHE-RSA-AES128-GCM-SHA256 - 启用
ssl_prefer_server_ciphers on;,确保按你设定的顺序协商,而非客户端主导
减少 Nginx 自身处理耗时
Nginx 作为反向代理,不应成为瓶颈。需避免在 HTTPS 层做冗余操作,同时保障后端通信低延迟。
- 关闭不必要的模块:如未用 gzip 压缩 API 响应,就别开
gzip;JSON 接口通常无需压缩,反而增加 CPU 开销 - 设置合理的超时:
proxy_connect_timeout 3s;、proxy_read_timeout 10s;,防止挂起阻塞连接 - 透传真实 IP 和协议:
proxy_set_header X-Forwarded-For $remote_addr;、proxy_set_header X-Forwarded-Proto $scheme;,避免后端重复判断 - 若后端也走 HTTPS,建议用可信内网通信,禁用证书校验(
proxy_ssl_verify off;)并复用连接(proxy_ssl_trusted_certificate可选)











