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 ok 和 test 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
系统公告

关于香港云优质服务器IP地址更换的通知

尊敬的客户: 因原IP运营商大幅涨价,为避免成本转嫁至用户,我司决定更换IP服务商。本次更换后,您的续费价格将保持不变,且新IP网络质量与服务标准不受影响。新IP已分配至后台,即刻生效(更换的新IP都是香港原生IPv4)。 涉及 IP 段: 45.192.x.x 旧 IP 停用时间: 2026 年 12 月 1 日
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意