如何在 Nginx 中开启 HTTP/2 协议以提升 HTTPS 网站的加载速度
如何在 Nginx 中开启 HTTP/2 协议以提升 HTTPS 网站的加载速度?
在成功部署 SSL 证书后,开启 HTTP/2 协议是提升网站性能最具性价比的手段。HTTP/2 引入了多路复用、头部压缩(HPACK)和服务器推送等特性,能够彻底解决 HTTP/1.1 时代“队头阻塞”和连接数受限的问题。在 Nginx 中启用 HTTP/2 并不复杂,但需要遵循严格的配置规范。
第一步:确认前置硬性条件
HTTP/2 在 Nginx 中仅支持基于 TLS 的加密模式(即 h2),主流浏览器不支持明文传输(h2c)。因此,您必须确保 Nginx 版本不低于 1.9.5,并且 OpenSSL 版本不低于 1.0.2(推荐 1.1.1 或更高版本以支持 TLS 1.3)。在部署前,可通过命令 nginx -V | grep http_v2 确认编译时已包含 http_v2 模块。
第二步:修改 Nginx 配置开启 HTTP/2
根据您使用的 Nginx 版本,配置语法略有不同。对于 Nginx 1.25.1 及以上版本,推荐使用独立的指令:
server {
listen 443 ssl;
http2 on;
server_name yourdomain.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.key;
# ... 其他配置}
对于较旧的 Nginx 版本,则直接在 listen 指令后追加 http2 参数:
listen 443 ssl http2;
同时,务必在 http 或 server 块中强制使用现代 TLS 版本,因为 HTTP/2 依赖 ALPN 进行协议协商:
ssl_protocols TLSv1.2 TLSv1.3;
第三步:利用服务器推送(Server Push)预加载资源
HTTP/2 允许服务器在客户端请求之前主动发送关键资源。对于首页等核心页面,您可以配置 Nginx 自动推送 CSS 和 JS 文件,大幅缩短首屏渲染时间:
location = /index.html {
http2_push /static/css/style.css;
http2_push /static/js/main.js;}
或者,通过响应头 Link 触发推送:
add_header Link "</style.css>; rel=preload; as=style";
http2_push_preload on;
第四步:验证协议是否生效
配置完成并执行 nginx -s reload 重载后,需验证 HTTP/2 是否成功启用。最便捷的方法是在命令行执行 curl -I --http2 https://yourdomain.com,若返回头显示 HTTP/2 200,则说明配置成功。您也可以在 Chrome 浏览器的开发者工具(F12)的 Network 面板中查看,协议列应显示为 h2。
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »