宝塔面板开启HTTP/3配置教程

· 阅读约需11分钟

一、准备工作(必做)

1. 环境要求验证

表格
组件最低要求推荐版本检查命令
Nginx1.25.0+(实验性)1.25.5+/1.30+nginx -v
OpenSSL1.1.1q+3.0.0+/QuicTLSnginx -V 查看编译参数
Linux 内核4.18+(支持 UDP GSO)5.0+uname -r
宝塔面板7.9.0+11.7.0+面板首页查看版本

2. 关键前提条件

  • 网站已配置HTTPS 证书(HTTP/3 仅支持加密连接)
  • 服务器安全组与宝塔防火墙均放行 UDP 443 端口(HTTP/3 基于 QUIC 协议,运行在 UDP 443)
  • 建议使用TLS 1.3(HTTP/3 最佳实践,部分客户端可能强制要求)

二、升级 Nginx 到支持 HTTP/3 的版本

步骤 1:升级宝塔面板(可选但推荐)

plaintext
# 登录SSH执行面板升级命令
curl https://download.bt.cn/install/update6.sh | bash

步骤 2:安装 / 升级 Nginx 到 1.25.5 + 版本

  1. 进入宝塔面板 → 软件商店Nginx设置
  2. 点击版本切换,选择1.25.5或更高版本(如 1.30)
  3. 等待编译安装完成(约 5-10 分钟,取决于服务器配置)

步骤 3:验证 Nginx 版本

plaintext
nginx -v
# 预期输出:nginx version: nginx/1.25.5 或更高

三、配置 HTTP/3(核心步骤)

方法 A:自动配置(宝塔 11.7.0+,推荐)

  1. 进入站点 → 设置SSL
  2. 关闭 SSL,然后重新启用 SSL(自动添加 HTTP/3 配置)
  3. 前往安全系统防火墙,放行UDP 443 端口

方法 B:手动配置(通用兼容)

  1. 进入站点 → 设置配置文件
  2. server块中添加以下配置:
nginx
# 原有HTTPS监听
listen 443 ssl http2;
# 添加HTTP/3监听(关键)
listen 443 quic reuseport;  # reuseport用于多进程负载均衡
# 启用HTTP/3
http3 on;
# 强制TLS 1.3(推荐)
ssl_protocols TLSv1.3;
# 告诉浏览器支持HTTP/3(关键)
add_header Alt-Svc 'h3=":443"; ma=86400';  # ma=86400表示缓存1天
  1. 完整配置示例:
nginx
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen 443 quic reuseport;  # HTTP/3监听
    server_name example.com;
    
    http3 on;  # 启用HTTP/3
    http2 on;  # 保留HTTP/2支持
    
    # SSL证书配置(与HTTP/2共用)
    ssl_certificate /path/to/ssl/fullchain.pem;
    ssl_certificate_key /path/to/ssl/private.key;
    
    ssl_protocols TLSv1.3;  # 仅启用TLS 1.3(推荐)
    ssl_prefer_server_ciphers on;
    ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256;
    
    # 关键:告诉浏览器支持HTTP/3
    add_header Alt-Svc 'h3=":443"; ma=86400';
    
    # 其他配置...
    root /www/wwwroot/example.com;
    index index.php index.html;
}
  1. 点击保存,然后重启 Nginx使配置生效

四、防火墙配置(必做)

HTTP/3 基于 UDP 协议,必须放行 UDP 443 端口,否则无法建立连接。

1. 宝塔面板防火墙设置

  1. 进入安全系统防火墙
  2. 点击放行端口,输入443,选择UDP协议,点击确定

2. 服务器安全组设置(云服务器)

  1. 登录云服务商后台(阿里云 / 腾讯云等)
  2. 找到对应服务器的安全组配置
  3. 添加入站规则:端口 443,协议 UDP,授权对象 0.0.0.0/0 和::/0

五、验证 HTTP/3 是否生效

方法 1:在线检测工具(推荐)

方法 2:浏览器内置工具

  1. Chrome/Edge
    • 访问 chrome://net-internals/#quic
    • 点击Start Recording,然后访问你的网站
    • 查看是否有QUIC_SESSION记录,状态码为 200
  2. Firefox
    • 访问 about:networking#quic
    • 查看连接列表中是否有你的域名,协议显示为h3

方法 3:命令行验证

bash
运行
# 安装curl(支持HTTP/3版本)
apt install curl -y  # Debian/Ubuntu
yum install curl -y  # CentOS/RHEL

# 测试HTTP/3连接
curl -I --http3 https://example.com
# 成功会显示:HTTP/3 200

六、常见问题与解决方案

1. 配置后无法访问网站

  • 检查端口放行:确认 UDP 443 端口在宝塔防火墙和云安全组均已放行
  • Nginx 日志排查:查看/www/wwwlogs/下的站点错误日志
  • 回滚配置:如问题无法解决,可暂时注释 HTTP/3 相关配置,恢复 HTTP/2 访问

2. 检测工具显示不支持 HTTP/3

  • 检查 Nginx 版本:确保是 1.25.0+,且编译时包含 QUIC 支持
  • 验证 TLS 1.3:HTTP/3 依赖 TLS 1.3,确认ssl_protocols包含 TLSv1.3
  • 清除浏览器缓存:Alt-Svc 头可能被缓存,清除缓存后重试

3. 部分用户无法使用 HTTP/3

  • 浏览器兼容性:确认用户使用的浏览器支持 HTTP/3(Chrome 88+、Firefox 85+、Edge 88+)
  • 网络限制:部分网络环境可能阻止 UDP 443 流量,可建议用户切换网络测试

七、性能优化建议

  1. 启用 Brotli 压缩:在 Nginx 配置中添加brotli on;,提升传输效率
  2. 配置 QUIC 参数(可选):
    nginx
    quic_max_idle_timeout 30s;
    quic_initial_max_data 1048576;
    quic_initial_max_stream_data_bidi_local 16384;
    quic_initial_max_stream_data_bidi_remote 65536;
    
  3. 使用 HTTP/3 专用 TLS 配置:优先选择 TLS 1.3 和高效加密套件

总结

HTTP/3 通过 QUIC 协议提供更快的连接建立、更低的延迟和更好的网络波动适应性。按照本教程完成配置后,你的网站将同时支持 HTTP/1.1、HTTP/2 和 HTTP/3,浏览器会自动选择最佳协议。