Nginx开启HTTP2提升并发访问速度配置 Nginx
前言
HTTP/1.1 一个连接上多个请求需要排队,HTTP/2 多路复用让一个连接并行传输多个资源,网页静态文件多时提速明显。HTTP/2 必须基于 HTTPS,纯 HTTP 无法启用。本文讲解确认 Nginx 是否带 http_v2 模块、监听配置、兼容降级、验证协议的完整步骤。
操作步骤
1. 检查是否支持 HTTP2
nginx -V 2>&1 | grep http_v2_module
有输出说明已编译支持;没有则需重新编译或用宝塔勾选模块。
2. 修改 443 监听行
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /www/ssl/example.crt;
ssl_certificate_key /www/ssl/example.key;
location / {
root /www/example;
index index.html;
}
}
3. 80 端口保持普通 HTTP 并跳转
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
4. 校验并重载
nginx -t
nginx -s reload
5. 验证是否为 h2
curl -I --http2 https://example.com
浏览器开发者工具网络面板协议列显示 h2 即成功。
常见坑
- listen 只写 http2 不写 ssl,报错启动失败,http2 必须配 SSL。
- Nginx 版本太老不带模块,需重新编译。
- CDN 接入后源站 http2 不一定对外生效,取决于 CDN。
- 老客户端自动降级 HTTP/1.1,无需额外处理。
- 开 http2 同时开启压缩会增加 CPU,低配机器留意负载。
- 多个证书站点共用 server,配置写法不变。
- HTTP/2 提升主要在资源多的页面,纯接口站点收益有限。
总结
开启 HTTP2 三要素:Nginx 带 http_v2 模块、listen 443 ssl http2、站点启用 HTTPS。开启后用 curl --http2 或浏览器面板验证 h2。它对图片、JS、CSS 多的页面提升明显,结合 gzip/brotli 压缩和静态缓存效果更好。
遇到问题加QQ23979811 协助处理