apache启用http/2需满足前提:版本≥2.4.17、openssl≥1.0.2,启用mod_http2与ssl模块,使用event mpm,配置https虚拟主机并添加protocols h2 http/1.1,同时优化tls 1.3、ocsp装订和会话复用。

Apache 启用 HTTP/2 能显著提升高并发场景下的连接效率,核心在于减少连接数、消除队头阻塞、降低 TLS 握手依赖——但它不是独立开关,必须与 TLS 配置、MPM 模型和后端协同生效。
确认前提条件并启用模块
HTTP/2 在 Apache 中依赖 mod_http2,且仅在 HTTPS 下强制启用(HTTP/2 over cleartext 不被主流浏览器支持):
- 确保 Apache ≥ 2.4.17,OpenSSL ≥ 1.0.2(推荐 1.1.1 或更高)
- 运行
a2enmod http2 ssl启用模块(Ubuntu/Debian);CentOS 上确认LoadModule http2_module modules/mod_http2.so已加载 - 禁用不安全旧协议:
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 +TLSv1.3
在 HTTPS 虚拟主机中声明协议
HTTP/2 必须在 <virtualhost></virtualhost> 块内显式启用,不能只靠全局设置:
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
- 添加配置行:
Protocols h2 http/1.1(顺序很重要,h2必须在前) - 确保该虚拟主机已正确配置 SSL/TLS(
SSLEngine on、证书路径、私钥等) - 若使用反向代理(如到 Tomcat),需额外确认后端也支持 HTTP/2 升级或至少兼容 ALPN 协商
配合关键 TLS 优化才能发挥效果
HTTP/2 的性能优势在 HTTPS 下才能释放,单开协议不调 TLS 反而可能变慢:
- 必须启用 TLS 1.3:握手更快、支持 0-RTT,大幅降低首字节时间
- 开启 OCSP 装订:
SSLUseStapling on+SSLStaplingCache shmcb:/var/cache/apache2/ssl_stapling(128000),避免客户端额外查询吊销状态 - 启用会话复用:
SSLSessionCache shmcb:/var/cache/apache2/ssl_scache(2097152)32+SSLSessionCacheTimeout 300,让多路复用真正复用底层连接
匹配 event MPM 并调优连接行为
prefork 或 worker MPM 无法高效支撑 HTTP/2 的长连接与多路复用特性:
- 切换为
mpm_event:启用命令a2enmod mpm_event,禁用mpm_prefork和mpm_worker - 在
mpm_event.conf中设置合理线程参数,例如:ThreadsPerChild 100、MaxRequestWorkers 800、KeepAliveTimeout 5 - HTTPS 虚拟主机中保持
KeepAlive On,但超时值不宜过长(3–5 秒为宜),避免空闲连接堆积










