Nginx开启HTTP/2后为啥浏览器还是显示HTTP/1.1? 轩辕树源 提问于 2026-03-18 20:16:25 阅读 6 工具 我按照网上的教程在 Nginx 里加了 http2 参数,配置看起来没问题,但 Chrome 开发者工具里看请求还是 HTTP/1.1,根本没生效。是不是哪里漏了? 我的站点是用 HTTPS 的,证书也正常。配置文件里 listen 那行是这么写的: listen 443 ssl http2; 而且 Nginx 版本是 1.20.1,应该支持 HTTP/2 啊。难道还要额外装模块或者改别的地方? 我来解答 赞 1 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 慕容梓晴 Lv1 这种情况最常见的原因是浏览器缓存了旧的连接。HTTP/2依赖ALPN(应用层协议协商),浏览器和服务器在TLS握手时会协商使用HTTP/2还是HTTP/1.1。如果你之前用HTTP/1.1访问过,浏览器可能还在用旧连接。 先试试这几个方法: 1. 打开Chrome隐私模式再访问,看Network面板里Protocol列显示的是不是h2 2. 清除浏览器缓存和Cookie,或者直接访问 chrome://net-internals/#h2 点击"Close idle connections" 3. 在命令行验证一下: curl -I --http2 -k https://你的域名/ 如果返回的响应头里有 HTTP/2,说明服务器配置是OK的 如果curl显示HTTP/2但浏览器还是HTTP/1.1,基本就是浏览器缓存问题。 另外提醒一点:Chrome的DevTools里默认不显示Protocol列。你需要在Network面板表头右键,勾选"Protocol"才能看到每个请求用的是h2还是http/1.1。 还有一种情况是SSL证书配置问题导致Nginx回退。检查一下ssl_protocols和ssl_ciphers的配置,尽量用现代一点的设置,比如: ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; 配置改完记得 nginx -s reload 重载一下。 回复 点赞 2026-03-18 20:22 加载更多 相关推荐 1 回答 55 浏览 配置了Nginx HTTP/2但浏览器还是显示HTTP/1.1? 折腾了一下午配置Nginx的HTTP/2,按照教程设置了443端口和ssl参数,但Chrome开发者工具里网络请求还是显示协议HTTP/1.1。我用JavaScript检测协议的代码也没反应,是不是哪... FSD-星光 工具 2026-02-01 13:03:42 1 回答 7 浏览 Nginx配置HTTPS后页面加载不安全资源怎么办? 我用Let's Encrypt给Nginx配了HTTPS,但网页里有些图片和脚本还是HTTP的,浏览器直接报“混合内容”错误,页面功能都乱了。 试过在Nginx里加add_header Content... Mr-慧研 工具 2026-03-17 06:42:21 2 回答 63 浏览 Nginx 开启 HTTP/2 后页面加载反而变慢了? 我按照教程在 Nginx 里加了 http2,但上线后发现首页加载比之前还慢,控制台也没报错,是不是配置哪里有问题? 我的 Nginx 配置里 listen 是这样写的:listen 443 ssl ... UP主~志选 工具 2026-02-24 08:37:21 2 回答 102 浏览 Nginx配置HTTPS后React应用无法访问静态资源怎么办? 我给React项目配置了Nginx HTTPS后,静态资源全404了。控制台提示"GET https://xxx/logo.png 404",但文件确实在build/public目录里。 React代... ___英杰 工具 2026-01-29 20:08:24 1 回答 20 浏览 HTTP/2推送怎么没生效?首屏资源还是慢 我在用 Nginx 配置 HTTP/2 推送关键 CSS,但 Chrome DevTools 里看不到 pushed 资源,首屏加载速度也没提升,是不是哪里配错了? 我试过在响应头加 Link pre... 长孙志达 优化 2026-03-08 10:33:19 2 回答 59 浏览 为什么我的Vue项目启用了HTTP/3但网络面板还是显示HTTP/2? 我最近在Vue项目里用fetch请求接口时,发现浏览器网络面板始终显示协议是HTTP/2。服务器已经配置了QUIC和HTTP/3,也确认过CDN支持。尝试过清除缓存、换Edge和Chrome最新版测试... 俊瑶 Dev 优化 2026-01-26 13:40:29 1 回答 23 浏览 Nginx配置CORS后前端还是报跨域错误怎么办? 我在本地用React调后端API,后端部署在另一台服务器上。已经在Nginx里加了CORS头,但浏览器还是报跨域错误,不知道哪里没配对。 这是我的请求代码: fetch('https://a... 码农彦森 工具 2026-03-09 22:27:16 2 回答 26 浏览 Nginx配置CORS后前端还是跨域,哪里出问题了? 我在本地用Vue开发,请求后端API一直报跨域错误,明明已经在Nginx里加了CORS头,但浏览器还是拦着不让过,到底是哪没配对? 我试过在Nginx的location块里加add_header,也重... Newb.柯依 工具 2026-02-25 18:09:19 1 回答 12 浏览 HTTP/2 开启后为什么资源加载反而变慢了? 我最近把项目从 HTTP/1.1 升级到 HTTP/2,本以为能提升性能,结果首页加载时间反而比之前还长。服务器是 Nginx,已经确认 http2 模块开启,Chrome DevTools 也显示协... Zz彤彤 优化 2026-03-15 08:11:20 2 回答 42 浏览 移动端HTTPS跳转后子页面显示证书错误怎么办? 我在开发电商小程序时遇到个奇怪的问题,主域名已经配置了HTTPS,但跳转到支付页面时浏览器突然提示NET::ERR_CERT_COMMON_NAME_INVALID。 支付页面是单独的子域名pay.e... IT人彦会 移动 2026-02-14 09:17:30
先试试这几个方法:
1. 打开Chrome隐私模式再访问,看Network面板里Protocol列显示的是不是h2
2. 清除浏览器缓存和Cookie,或者直接访问
chrome://net-internals/#h2点击"Close idle connections"3. 在命令行验证一下:
如果返回的响应头里有
HTTP/2,说明服务器配置是OK的如果curl显示HTTP/2但浏览器还是HTTP/1.1,基本就是浏览器缓存问题。
另外提醒一点:Chrome的DevTools里默认不显示Protocol列。你需要在Network面板表头右键,勾选"Protocol"才能看到每个请求用的是h2还是http/1.1。
还有一种情况是SSL证书配置问题导致Nginx回退。检查一下ssl_protocols和ssl_ciphers的配置,尽量用现代一点的设置,比如:
配置改完记得
nginx -s reload重载一下。