Apache 中启用 HTTP/2 如何配置

作者:袖梨 2026-08-10

Apache启用HTTP/2需满足三个前提:使用2.4.17或更高版本、启用TLS(HTTPS)、加载mod_http2模块;配置时须在443端口的VirtualHost中添加Protocols h2 http/1.1并确保SSL已正确启用。

Apache 启用 HTTP/2 需要满足三个前提:使用 2.4.17 或更高版本、启用 TLS(HTTPS)、加载 mod_http2 模块。配置本身不复杂,但缺一不可。

确认基础环境是否就绪

先检查 Apache 版本和模块状态:

  1. 运行 apachectl -v,确保输出中显示 Server version: Apache/2.4.17 或更新版本
  2. 运行 apachectl -M | grep http2,若无输出,说明 mod_http2 未加载,需手动启用
  3. HTTP/2 仅在 HTTPS 虚拟主机下生效(明文 HTTP/1.1 不支持 h2),请确认站点已配置有效 SSL 证书并启用 SSLEngine on

加载 mod_http2 模块

根据系统类型选择方式:

  1. Debian/Ubuntu 系统通常已自带,只需执行 a2enmod http2,再 systemctl restart apache2
  2. RHEL/CentOS 系统需编辑 /etc/httpd/conf.modules.d/00-base.conf,添加:

    LoadModule http2_module modules/mod_http2.so

  3. 源码编译安装的 Apache,需确认编译时启用了 --enable-http2,且 mod_http2.so 存在于 modules/ 目录下

在虚拟主机中启用 h2 协议

不要写在全局主配置里,应放在启用 HTTPS 的 <VirtualHost *:443> 块内:

  1. 添加协议声明:Protocols h2 http/1.1
  2. 推荐同时加上:ProtocolsHonorOrder on,确保客户端优先协商 h2
  3. 完整示例片段:
<VirtualHost *:443>

ServerName example.com

SSLEngine on

SSLCertificateFile /path/to/cert.pem

SSLCertificateKeyFile /path/to/privkey.pem

Protocols h2 http/1.1

ProtocolsHonorOrder on

DocumentRoot /var/www/html

</VirtualHost>

验证是否生效

重启服务后,用以下任一方式确认:

  1. 浏览器开发者工具 → Network 标签页 → 刷新页面 → 查看任意请求的 Protocol 列是否显示 h2
  2. 终端执行:curl -I --http2 -k https://example.com,响应头首行应为 HTTP/2 200
  3. 在线检测:https://www.php.cn/link/d006bce17dc2f016b118efb55be3e121 输入域名即可自动判断

相关文章

精彩推荐