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

已启用HTTP/2的网站为何未使用该协议?NGINX反向代理求助

排查Chrome显示HTTP/1.1而非HTTP/2的问题

遇到这种情况别着急,我帮你梳理几个常见的排查方向,一步步来定位问题:

  • 确认Nginx的HTTP/2配置是否正确
    首先要明确:Chrome仅支持基于HTTPS的HTTP/2(也就是h2协议),不支持明文的HTTP/2(h2c)。所以你的Nginx监听443端口的配置必须同时包含ssl和http2参数,比如:

    listen 443 ssl http2;
    

    如果你的配置里只写了listen 80 http2;,那Chrome肯定会用HTTP/1.1,因为明文HTTP/2不被支持。另外,要确保SSL相关配置(证书、密钥路径)都正确,没有语法错误,可以用nginx -t验证配置文件。

  • 检查SSL证书的有效性
    Chrome对SSL证书的要求很严格,如果证书是自签名、过期、域名不匹配,或者证书链不完整,浏览器会拒绝使用HTTP/2,自动降级到HTTP/1.1。你可以点击Chrome地址栏的锁图标,查看证书详情,确认有没有警告信息。如果是自签名证书,需要手动添加信任,否则Chrome不会启用HTTP/2。

  • 排除中间代理/网络环境的干扰
    如果你使用了浏览器代理、VPN,或者所在网络里有其他反向代理设备,这些中间节点可能不支持HTTP/2,导致连接被降级。建议你暂时关闭代理和VPN,切换到手机热点这类干净的网络环境测试,看是否能正常使用HTTP/2。

  • 用Chrome DevTools和NetLog分析请求
    打开Chrome开发者工具(按F12),切换到「Network」标签页,刷新页面后查看每个请求的「Protocol」列,确认是否所有请求都显示h2。如果还是显示HTTP/1.1,可以导出NetLog日志进一步分析:

    1. 打开chrome://net-export/页面
    2. 点击「Start logging to disk」,选择保存位置
    3. 访问你的网站,然后点击「Stop logging」
      日志里会记录HTTP/2握手的详细过程,能帮你找到失败的原因(比如ALPN协商失败)。
  • 查看Nginx日志确认协议
    你可以在Nginx的access.log配置里添加$http2变量,比如日志格式:

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http2"';
    

    重新加载Nginx配置后,查看日志里的$http2字段,如果显示h2,说明Nginx已经收到HTTP/2请求,问题出在Chrome端;如果显示""或者http/1.1,那说明Nginx的配置还是有问题,没有正确启用HTTP/2。

  • 确认Chrome版本和相关设置
    确保你的Chrome是较新版本(比如近半年内的版本),旧版本可能对HTTP/2的支持有缺陷。另外,检查chrome://flags页面里的「HTTP/2」选项,确保它设置为「Default」或者「Enabled」,不要设为「Disabled」。

内容的提问来源于stack exchange,提问作者Peter de Bruijn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:57:29