要启用HTTP/2与HTTP/3双协议支持,需升级Nginx至1.25+、配置SSL监听并添加http2与quic指令、开放UDP 443端口、确保TLS 1.3证书兼容、并在浏览器中启用QUIC实验功能。

如果您已部署HTTPS站点并希望提升传输性能与连接效率,但浏览器仍使用HTTP/1.1或HTTP/2协议通信,则可能是Nginx未启用HTTP/2支持,或QUIC/HTTP/3相关模块与配置缺失。以下是实现HTTP/2与HTTP/3双协议支持的多种独立方案:
一、升级Nginx至1.25及以上版本并启用HTTP/2
HTTP/2协议依赖Nginx 1.9.5+版本,且必须在SSL监听指令中显式声明。宝塔默认安装的旧版Nginx(如1.22或更低)不支持HTTP/2,需手动升级至1.25或更高版本以兼容后续HTTP/3基础环境。
1、通过SSH连接服务器,执行官方升级脚本命令:
wget https://download.bt.cn/install/0/nginx5.sh && bash nginx5.sh install 1.25
2、等待编译完成,在宝塔面板首页查看Nginx版本号,确认显示为1.25.x 或 1.26.x
3、进入宝塔面板 → 网站 → 选择目标站点 → 配置文件,在server块中定位到listen 443 ssl;行
4、将该行修改为:
listen 443 ssl http2;
5、保存配置文件,执行nginx -t验证语法,无误后重启Nginx服务
二、配置QUIC监听与HTTP/3必需头字段
HTTP/3基于UDP传输,需启用QUIC监听端口并注入Alt-Svc响应头,使客户端识别服务端支持的HTTP/3版本及有效期。此步骤必须在Nginx 1.25+且已启用SSL的前提下操作,否则QUIC监听将被忽略。
1、在站点Nginx配置文件的server块内,将原有443端口监听扩展为两行:
listen 443 ssl;
listen 443 quic reuseport;
2、若服务器支持IPv6,追加以下两行:
listen [::]:443 ssl;
listen [::]:443 quic reuseport;
3、在server块内任意位置(建议置于ssl_protocols下方)添加:
ssl_early_data on;
4、在同一server块内添加Alt-Svc响应头,采用兼容性更强的LiteSpeed格式:
add_header Alt-Svc 'h3=":443"; ma=2592000, h3-29=":443"; ma=2592000, h3-Q050=":443"; ma=2592000, quic=":443"; ma=2592000; v="43,46"';
5、保存配置,执行nginx -t检查,成功后重启Nginx
三、开放防火墙UDP 443端口并配置云平台安全组
QUIC使用UDP协议承载HTTP/3流量,仅开放TCP 443无法建立HTTP/3连接。系统防火墙与云服务商安全组必须同步放行UDP 443,否则客户端始终降级至HTTP/2或HTTP/1.1。
1、在宝塔面板左侧菜单点击【安全】,找到当前服务器IP对应的安全规则
2、点击【放行端口】,输入443,协议类型选择UDP,点击提交
3、登录云服务商控制台(如腾讯云、阿里云、华为云),进入【安全组】管理页面
4、找到绑定该服务器的实例所用安全组,编辑入方向规则
5、新增规则:端口范围填443/443,协议类型选UDP,源IP可设为0.0.0.0/0(生产环境建议限制来源)
四、验证证书兼容性并禁用冲突指令
部分自签名或老旧商业证书不支持TLS 1.3早期数据(Early Data),会导致QUIC握手失败;同时Nginx配置中若存在http2重复声明或与quic共存时语法错误,也会阻断HTTP/3生效。
1、确认所用SSL证书来自Let's Encrypt、ZeroSSL或TrustAsia等支持TLS 1.3的CA机构
2、检查Nginx配置中是否出现类似listen 443 ssl http2 quic;的单行写法——该写法非法,必须拆分为独立listen指令
3、搜索配置文件中是否存在ssl http2字样出现在非listen行,如有则删除
4、确保ssl_protocols至少包含TLSv1.3,例如:
ssl_protocols TLSv1.2 TLSv1.3;
5、执行nginx -t验证,避免因语法错误导致服务中断
五、客户端浏览器启用QUIC实验性功能
即使服务端完全配置正确,主流浏览器默认仍禁用QUIC协议栈。需手动开启实验性标志,强制客户端发起HTTP/3协商请求,否则无法触发Alt-Svc头解析与连接升级。
1、Chrome浏览器访问地址栏输入:chrome://flags/#enable-quic,将Experimental QUIC protocol设为Enabled
2、Edge浏览器访问:edge://flags/#enable-quic,同样设为Enabled
3、Firefox浏览器访问:about:config,搜索network.http.http3.enabled,双击切换为true
4、重启浏览器后,访问https://http3check.net,输入您的域名进行实时检测










