Apache中开启HTTP/2需满足HTTPS前提、组件版本要求及event MPM,配置Protocols h2 http/1.1于443虚拟主机,并优化TLS与缓存才能真正提升性能。

Apache 中开启 HTTP/2 能明显提升网页传输性能,核心在于多路复用、头部压缩和减少连接开销,但必须配合 HTTPS 和合理调优才有效——它不是加一行配置就能提速的开关。
确认基础前提条件
HTTP/2 在 Apache 中仅支持 HTTPS 场景(不支持明文 h2c),且依赖底层组件版本:
- Apache 版本 ≥ 2.4.17(推荐 2.4.26+,尤其需负载均衡时)
- OpenSSL ≥ 1.0.2(强烈建议 1.1.1 或更高,以支持 TLS 1.3)
- 已编译或启用 mod_http2 模块(Ubuntu/Debian 运行
a2enmod http2 ssl;CentOS 检查LoadModule http2_module modules/mod_http2.so是否存在并启用) - 使用 event MPM(prefork 或 worker 不适合 HTTP/2 的长连接与并发模型;执行
a2enmod mpm_event并禁用其他 MPM)
在 HTTPS 虚拟主机中启用协议
HTTP/2 必须在 <VirtualHost *:443> 块内显式声明,全局设置无效:
Apache 2.4.62 官方 tar.gz 源码包是 Linux 及类 Unix 系统构建 Web 服务器的核心基础。通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
- 确保
SSLEngine on及证书路径(SSLCertificateFile、SSLCertificateKeyFile)已正确配置 - 添加协议行:
Protocols h2 http/1.1(顺序不能颠倒,h2必须在前) - 禁用老旧 TLS 协议:
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 +TLSv1.3
配套 TLS 优化才能释放性能
只开 h2 不调 TLS,反而可能因握手拖慢首字节时间:
- 强制启用 TLS 1.3(已在上一步配置中体现)
- 开启 OCSP 装订:添加
SSLUseStapling on和SSLStaplingCache shmcb:/var/cache/apache2/ssl_stapling(128000) - 启用 会话缓存:
SSLSessionCache shmcb:/var/cache/apache2/ssl_scache(2097152)和SSLSessionCacheTimeout 300
配合缓存与连接行为调优
避免 HTTP/2 的多路复用能力被低效缓存或过早断连抵消:
- 静态资源用
mod_expires设置长期缓存(如 JS/CSS 设为"access plus 1 year") - 启用
KeepAlive On,并设合理值:KeepAliveTimeout 5、MaxKeepAliveRequests 100 - 若用反向代理(如到 Tomcat),后端可继续用 HTTP/1.1 或 AJP,无需升级 HTTP/2;但需两端
keepAliveTimeout匹配
配置完成后,重启 Apache 并用浏览器开发者工具的 Network 面板查看协议列是否显示 h2,或用 curl -I --http2 https://yoursite.com 验证。不复杂但容易忽略细节。


















