apache启用http/2需同时满足:apache≥2.4.17且启用mod_http2、openssl≥1.0.2(推荐1.1.1+)、https虚拟主机、有效证书与准确时间;并强制协议栈为h2 http/1.1、禁用旧tls版本、启用keepalive与event mpm、配置ocsp装订和session缓存。

Apache 启用 HTTP/2 本身只是第一步,真正提升性能需要配合 TLS 协议、连接复用、缓存机制与后端协同——否则多路复用优势会被握手延迟或连接中断抵消。
确保基础前提全部满足
HTTP/2 在 Apache 中无法独立生效,必须同时满足:
- Apache ≥ 2.4.17(推荐 2.4.53+),且已启用 mod_http2 模块(
a2enmod http2) - OpenSSL ≥ 1.0.2(强烈建议 1.1.1 或更高,以完整支持 TLS 1.3)
- 虚拟主机必须运行在 HTTPS 下(HTTP/2 不支持明文 HTTP,即 h2c 仅限调试且默认禁用)
- 证书有效、域名匹配,且服务器时间准确(OCSP 装订和 TLS 1.3 依赖可信时间)
强制启用 HTTP/2 并关闭低效协议
在 HTTPS 的 <virtualhost></virtualhost> 块中明确声明协议栈:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
Protocols h2 http/1.1 SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 +TLSv1.3
这样可确保客户端优先协商 HTTP/2,同时彻底屏蔽不安全旧协议。TLS 1.3 是 HTTP/2 高效运行的关键支撑——它将握手压缩至 1-RTT,并为 0-RTT 提供可能。
调优连接行为以释放 HTTP/2 多路复用潜力
HTTP/2 的核心价值在于单连接并发多请求,因此要避免过早断连或资源争用:
- KeepAlive 必须开启:
KeepAlive On - 超时设为保守值:
KeepAliveTimeout 5(太长易积压空闲连接,太短削弱复用) - 最大请求数建议
MaxKeepAliveRequests 100或更高(HTTP/2 下单连接承载能力强,不必限制过严) - MPM 必须使用 event(
a2enmod mpm_event && a2dismod mpm_prefork mpm_worker),prefork 和 worker 无法高效处理 HTTP/2 的异步 I/O 模式
配套启用关键加速机制
单独 HTTP/2 效果有限,需叠加以下配置形成合力:
-
OCSP 装订:减少证书吊销检查延迟,加在虚拟主机内:
SSLUseStapling on<br>SSLStaplingCache "shmcb:/var/cache/apache2/ssl_stapling(128000)"
-
Session 缓存:避免重复 TLS 握手,全局配置:
SSLSessionCache shmcb:/var/cache/apache2/ssl_scache(2097152)32<br>SSLSessionCacheTimeout 300
-
头部压缩与推送克制:HTTP/2 自带 HPACK 压缩,无需额外配置;Server Push 易引发缓存混乱,生产环境建议保持默认禁用(不配
H2Push即可)










