apache启用http/2需满足版本≥2.4.17、启用mod_http2等模块及openssl≥1.0.2,并在ssl虚拟主机中配置protocols h2 http/1.1;cdn回源若支持http/2则需手动开启,否则仅用户到cdn段生效。

Apache 启用 HTTP/2 本身不直接依赖 CDN,但和 CDN 协同工作时,必须注意协议传递与 TLS 终止层级——CDN 通常在边缘终止 HTTPS 并与源站(Apache)建立新连接。要让整个链路真正跑在 HTTP/2 上,关键在于:CDN 到用户走 HTTP/2(绝大多数主流 CDN 默认支持),而 CDN 到 Apache 源站也需启用 HTTP/2,否则后半段会降级为 HTTP/1.1,失去多路复用等优势。
确认 Apache 版本与模块支持
HTTP/2 在 Apache 中由 mod_http2 提供,要求:
- Apache ≥ 2.4.17(推荐 ≥ 2.4.37,修复早期 h2 稳定性问题)
- 已启用
mod_http2、mod_ssl和mod_headers - OpenSSL ≥ 1.0.2(支持 ALPN,HTTP/2 协商必需)
执行以下命令验证:
sudo a2enmod http2 ssl headersapache2ctl -M | grep -E "(http2|ssl|headers)"
配置 SSL 虚拟主机并启用 HTTP/2
编辑你的站点 HTTPS 配置(如 /etc/apache2/sites-available/your-site-ssl.conf),确保包含:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
ServerName example.com
SSLEngine on
SSLCertificateFile /path/to/fullchain.pem
SSLCertificateKeyFile /path/to/privkey.pem
# 关键:声明协议优先级,h2 必须在最前
Protocols h2 http/1.1
# 可选:禁用不安全的协商方式
H2Direct on
# 其他常规配置...
⚠️ 注意:不要写 h2c(明文 HTTP/2),CDN 回源一般走 TLS,且多数 CDN 不支持 h2c;只保留 h2 http/1.1 即可。
CDN 回源设置要点
主流 CDN(Cloudflare、Akamai、阿里云 DCDN、腾讯云 CDN)默认对源站使用 HTTPS + HTTP/1.1 回源。若要启用 CDN→Apache 的 HTTP/2 回源,需手动配置:
- Cloudflare:暂不开放客户自定义回源协议,始终用 HTTP/1.1(截至 2026 年中);此时你只需确保 Apache 启用 HTTP/2 即可优化“用户↔CDN”段,源站段无法升级
- 阿里云全站加速(DCDN):在“回源配置”中开启“HTTP/2 回源”开关,并确保源站端口为 443、证书有效
-
自建或可控 CDN(如 Nginx 做反向代理):在 upstream 中显式启用 HTTP/2:
upstream backend {
server your-apache-ip:443 protocol=https;
}
proxy_http_version 2.0;
验证是否生效
分两层验证:
-
用户到 CDN 边缘:浏览器开发者工具 → Network → 查看任意资源的 Protocol 列,显示
h2即表示成功 -
CDN 到 Apache 源站:在 Apache 日志中添加协议字段,修改
LogFormat:
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %{THE_REQUEST}e %{HTTP2}n" combined-h2
然后查看 access.log,若HTTP2字段为on,说明回源连接确实用了 HTTP/2
如果 CDN 不支持 HTTP/2 回源,也不影响前端体验——HTTP/2 的核心收益(头部压缩、多路复用、服务器推送)已在用户到 CDN 这一段兑现。源站压力主要靠缓存策略(如 Apache 的 mod_cache_disk)和 CDN 缓存规则来缓解,而非协议版本。










