nginx真正发挥http/2并发与传输优势需tls层、连接管理、帧控制和上下游协同四层配合:必须启用tlsv1.2+、强加密套件及可信证书;调优http2_max_concurrent_streams等参数;合理设置keepalive_timeout和系统内核参数;反向代理链路中上游通常保持http/1.1更稳妥。

要让 Nginx 真正发挥 HTTP/2 的并发与传输优势,不能只加个 http2 参数就完事。关键在于 TLS 层、连接管理、帧控制和上下游协同四个层面的配合调优。
确保 HTTPS 基础配置达标
HTTP/2 在浏览器中仅支持加密通道(h2),明文 h2c 模式基本不可用。必须满足:
- TLS 版本至少为 TLSv1.2,强烈推荐启用 TLSv1.3
- 禁用不安全套件:关闭
SSLv3、TLSv1.0、TLSv1.1,避免RC4、MD5、SHA1 - 使用强加密套件,例如:
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384 - 开启 ALPN 协商(现代 OpenSSL 默认支持,无需额外配置)
- 证书需完整可信,建议用 Let’s Encrypt 全链证书(含
fullchain.pem)
调优 HTTP/2 连接与帧行为
默认值适合通用场景,但高并发或大头部请求时容易触发限制或降级:
-
http2_max_concurrent_streams:默认 128,大图/富前端站点可设为 256 或 512 -
http2_max_field_size和http2_max_header_size:JWT、OpenTelemetry 追踪头易超限,建议分别设为 16k 和 64k -
http2_max_requests:单连接最大请求数,默认 1000;短连接高频场景可提高至 3000–5000,减少重连开销 -
http2_idle_timeout:空闲连接保持时间,默认 3m,内网稳定环境可适当延长
合理设置 TCP 与连接复用参数
HTTP/2 的多路复用依赖底层连接稳定性:
-
keepalive_timeout建议设为 60–120s,与客户端keep-alive策略对齐 -
keepalive_requests可设为 10000,配合高http2_max_requests提升复用率 - 避免
ssl_buffer_size过小(如 4k),默认 16k 更利于吞吐,防止小包碎片 - 系统级调优:增大
net.core.somaxconn(如 65535),防 SYN 队列溢出
反向代理链路不强制上游用 HTTP/2
Nginx 作为网关,面向客户端启用 HTTP/2 即可;向上游服务通常保持 HTTP/1.1 + keepalive 更稳妥:
- 多数后端(Spring Boot、Gunicorn、Node.js)对 HTTP/2 反向代理支持不成熟,易出现流控制异常
- 内网延迟低,HTTP/1.1 +
proxy_http_version 1.1+proxy_set_header Connection ''已足够高效 - 上游若确需 h2(如 gRPC 服务),需确认其支持 ALPN,并启用
proxy_http_version 2.0及对应 TLS 配置











