Nginx配置网站HTTP/2,提升页面加载速度

想让网站在浏览器里加载更快,HTTP/2 是成本最低的优化项之一。
它允许同一个连接并行传输多个资源,减少握手和队头阻塞,对图片、CSS、JS 较多的站点提升明显。
下面按零基础也能照做的顺序,讲清 Nginx 配置 HTTP/2 的完整流程和验证方法。

开始前的两个硬性条件

HTTP/2 在主流浏览器中基本只在 HTTPS 下启用,所以你需要先有可用的 SSL 证书。
如果没有证书,可以先用 Let's Encrypt 免费签发,或在宝塔面板中一键申请。

准备清单:

  • 一台已安装 Nginx 的服务器,能通过 SSH 登录
  • 已解析到服务器的域名
  • 有效的 SSL 证书文件(.crt.pem)和私钥文件(.key
  • 服务器防火墙放行 443 端口

检查 Nginx 是否支持 HTTP/2,执行:

nginx -V 2>&1 | grep -o with-http_v2_module

输出 with-http_v2_module 说明支持。
如果没有输出,需要重新编译 Nginx 或改用官方预编译包。

修改 Nginx 站点配置开启 HTTP/2

找到你的站点配置文件,常见路径是 /etc/nginx/conf.d/你的域名.conf/etc/nginx/sites-available/你的域名
宝塔面板用户可以在“网站”->“设置”->“配置文件”中直接编辑。

把原来的 443 监听改成下面这样:

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate     /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    root /var/www/html;
    index index.html;
}

关键点:listen 443 ssl http2; 里的 http2 就是开启开关。
如果你用的是较新的 Nginx 版本,也可以写成 listen 443 ssl; 再加一行 http2 on;,具体以官方文档和本机 nginx -v 版本为准。

保存后先测试配置语法:

nginx -t

看到 syntax is oktest is successful 再重载:

systemctl reload nginx

容易踩坑的几个地方

只改 HTTP 站点不生效。 如果你只写了 listen 80;,浏览器仍走 HTTP/1.1。
必须确保访问的是 https:// 地址。

证书链不完整。 只配置域名证书、缺少中间证书时,部分浏览器会直接拒绝连接。
建议使用 fullchain.pem 这类包含完整链路的文件。

旧版 Nginx 写法不同。 早期版本只支持 listen 443 ssl http2;,新版本推荐 http2 on;
两种写法混用可能报错,改完务必用 nginx -t 检查。

CDN 会改变结果。 如果网站前面套了 CDN,浏览器看到的是 CDN 节点的协议版本。
需要在 CDN 控制台也开启 HTTP/2,否则源站开了也没用。

怎么确认 HTTP/2 真的生效了

方法一:浏览器打开网站,按 F12 进入“网络”面板,右键表头勾选“协议”。
刷新页面后看 Protocol 列,显示 h2 就是 HTTP/2,显示 http/1.1 说明还没生效。

方法二:命令行验证:

curl -I --http2 https://你的域名

返回结果第一行包含 HTTP/2 200 即表示成功。
如果返回 HTTP/1.1,回到上一步检查配置和重载是否完成。

开启 HTTP/2 后,页面资源加载的并发能力会提升,尤其对同域名下大量小文件的站点效果更直接。
但它不是万能药,图片压缩、缓存策略、CDN 仍然要配合使用。

常见疑问

HTTP/2 需要改网站代码吗? 不需要。
它工作在传输层,对 HTML、CSS、JS 都是透明的,配置完成后浏览器自动协商。

开了 HTTP/2 还要开 HTTP/3 吗? 两者不冲突。
HTTP/3 基于 QUIC,在弱网环境下可能更好,但需要 Nginx 编译支持或使用 CDN,建议先稳定运行 HTTP/2 再考虑。

为什么 nginx -t 报错 unknown directive "http2"? 说明当前 Nginx 版本不支持该写法,
可以改回 listen 443 ssl http2;
或升级 Nginx 到支持新语法的版本。

配置后网站打不开怎么办? 先执行 nginx -t 看语法,再检查 443 端口是否被防火墙拦截,最后确认证书路径和权限是否正确。
回滚配置后重载即可恢复。

分享到:
上一篇
宝塔面板一键迁移失败,手动网站搬家方案
下一篇
Nginx设置缓存有效期,静态文件缓存策略
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意