Apache 安装时不自动启用 HTTP/2,需源码编译时指定 --enable-http2、--with-ssl 等选项,并安装后加载 mod_http2 模块、启用 event MPM、在 443 虚拟主机中配置 Protocols h2 http/1.1 且启用 TLS 1.3 及 ALPN 才能生效。

Apache 安装时本身不自动启用 HTTP/2,必须在安装后明确配置模块、协议和 TLS 环境。HTTP/2 在 Apache 中不是“开箱即用”的功能,它依赖版本、编译选项、SSL 配置和运行时模块加载四者协同——缺一不可。
安装阶段就要确保支持 HTTP/2
如果你是源码编译安装(推荐用于生产环境精准控制),需在 ./configure 阶段显式启用:
- 指定 OpenSSL 路径并确保版本 ≥ 1.0.2(强烈建议 1.1.1 或 3.x):
--with-ssl=/usr/local/openssl - 启用 HTTP/2 模块:
--enable-http2 - 启用必要依赖模块:
--enable-ssl --enable-so --enable-mods-shared=all - 完成后执行
make && sudo make install,安装后检查模块是否存在:ls modules/mod_http2.so
安装后必须完成的三步关键配置
即使安装时已编译支持,仍需手动完成以下配置才能真正启用 HTTP/2:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
加载模块:在主配置文件(如
httpd.conf或/etc/apache2/mods-enabled/http2.load)中确认存在:LoadModule http2_module modules/mod_http2.so -
使用 event MPM:HTTP/2 依赖异步连接模型,
prefork或worker不适用。
启用命令(Ubuntu/Debian):a2enmod mpm_event;CentOS:sudo systemctl disable httpd && sudo systemctl enable httpd-event -
仅在 HTTPS 虚拟主机中声明协议:在
<VirtualHost *:443>块内添加:Protocols h2 http/1.1
顺序不能颠倒,且必须搭配SSLEngine on和有效证书。
配套 TLS 优化决定实际提速效果
HTTP/2 的性能优势(如多路复用、头部压缩)只有在高质量 TLS 环境下才能释放。光配 h2 不调 TLS,反而可能因握手拖慢首字节时间:
- 强制 TLS 1.3:
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 +TLSv1.3 - 开启 OCSP 装订:
SSLUseStapling on+SSLStaplingCache shmcb:/var/cache/apache2/ssl_stapling(128000) - 启用会话复用:
SSLSessionCache shmcb:/var/cache/apache2/ssl_scache(2097152)+SSLSessionCacheTimeout 300
验证是否真正生效
重启 Apache 后,不要只看配置有没有报错,要实测:
- 浏览器打开 DevTools → Network → 刷新页面 → 查任意请求的 Protocol 列显示
h2 - 终端执行:
curl -I --http2 -k https://yoursite.com,响应首行应为HTTP/2 200 - 用
openssl s_client -alpn h2 -connect yoursite.com:443检查 ALPN 协商是否成功

















