You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu本地Apache服务器HTTP/2浏览器无法生效问题求助

问题排查与解决方案

核心原因:浏览器不支持明文HTTP下的h2c

你用curl成功升级是因为指定了--http2强制使用h2c(明文HTTP/2),但所有现代浏览器仅在HTTPS(TLS加密)环境下才支持HTTP/2,不会自动在http://域名下协商启用h2c,这是浏览器的默认安全策略。

具体配置步骤

1. 确认Apache已加载HTTP/2模块

先检查并启用mod_http2模块:

sudo a2enmod http2
sudo systemctl restart apache2

2. 配置HTTPS并开启HTTP/2

浏览器要求HTTPS才能触发HTTP/2,需要给本地域名配置SSL证书(本地可用自签证书):

  • 生成自签证书(示例命令):
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/test.local.key -out /etc/ssl/certs/test.local.crt
  • 修改你的VirtualHost配置文件(通常在/etc/apache2/sites-available/test.local.conf),添加HTTPS监听和HTTP/2支持:
<VirtualHost *:443>
    ServerName test.local
    DocumentRoot /path/to/your/public

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/test.local.crt
    SSLCertificateKeyFile /etc/ssl/private/test.local.key

    # 优先使用HTTP/2,降级为HTTP/1.1
    Protocols h2 http/1.1

    # 其他常规配置(如Rewrite、Directory等)...
</VirtualHost>

# 可选:把HTTP请求自动重定向到HTTPS
<VirtualHost *:80>
    ServerName test.local
    Redirect permanent / https://test.local/
</VirtualHost>
  • 启用SSL模块并重启Apache:
sudo a2enmod ssl
sudo systemctl restart apache2

3. 浏览器端信任自签证书

自签证书会被浏览器标记为不安全,需要手动添加信任:
访问https://test.local,按照浏览器提示添加安全例外,确认信任该证书。

4. 验证效果

重启浏览器后访问https://test.local/public/,打开开发者工具的「网络」面板,查看请求的协议列,应该显示为h2。

额外检查点

  • 确保Apache版本不低于2.4.17(这是支持HTTP/2的最低版本):
apache2 -v
  • 确认Protocols指令是配置在HTTPS的VirtualHost中,而非HTTP的虚拟主机。

内容的提问来源于stack exchange,提问作者user5198077

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 20:55:03