通过宝塔面板开启网站HTTP/3的方法(Nginx教程)

快速看懂:本文手把手教宝塔Nginx开启HTTP/3,搞定UDP443双端口放行、全套可直接复制的站点配置,附带WordPress开启H3后HTTP_HOST报错专属修复方案,配置完可在线一键核验是否生效。

开启HTTP/3三大前置必备条件

想要成功启用网站HTTP/3协议,必须提前完成下面3项配置,缺一不可,按照顺序逐一核对。

1. Nginx版本≥1.25.5

HTTP/3原生支持从Nginx1.25.5版本开始正式稳定,低于该版本无法原生编译启用QUIC,宝塔用户可在网站选项中查看当前Nginx版本。

查看Nginx版本

如果低这个版本号,可进入宝塔面板→软件商店→找到Nginx→点击编译安装,选择1.25.5及以上正式版本,编译选项默认勾选QUIC相关组件;不推荐系统源一键升级,容易缺失HTTP/3依赖模块,导致QUIC无法启用。

2. 站点已部署SSL证书(HTTPS)

HTTP/3协议强制依赖HTTPS加密环境,纯HTTP网站无法开启H3;没有证书可在宝塔SSL模块免费申请Let's Encrypt泛域名/单域名证书。

检测部署SSL证书

3. 宝塔防火墙+云服务器安全组放行UDP 443端口

HTTP/3底层基于UDP协议传输,TCP443不生效,需要两处同时放行UDP:443入站规则。

①宝塔面板→安全→端口规则,新增UDP协议443放行:

宝塔面板放行UDP443

②阿里云/腾讯云等服务商后台安全组,添加入方向UDP 443全IP放行:

云服务后台添加UDP 443

站点Nginx配置修改(IPv4专用完整配置)

路径:宝塔面板 → 网站 → 对应域名 → 设置 → 配置文件

重要提醒:粘贴配置前,全选原有配置复制备份,配置出错可以快速回滚恢复。

下方为经过实测可用的HTTP/3 Nginx配置代码,直接全选替换原有server配置:

server {
    # ---------- 基础监听 ----------
    listen 80;
    listen 443 ssl ;               # IPv4 HTTPS + HTTP/2
    http2 on;
    listen 443 quic reuseport;           # IPv4 QUIC (HTTP/3) - 仅第一个站点加 reuseport

    # ---------- 站点信息 ----------
    server_name meowtool.com www.meowtool.com;
    root /www/wwwroot/meowtool.com;
    index index.php index.html index.htm default.php default.htm default.html;

    # ---------- SSL 证书 ----------
    ssl_certificate    /www/server/panel/vhost/cert/meowtool.com/fullchain.pem;
    ssl_certificate_key /www/server/panel/vhost/cert/meowtool.com/privkey.pem;

    # ---------- SSL 协议与优化 ----------
    ssl_protocols TLSv1.2 TLSv1.3;               # 修改为同时兼容 TLSv1.2
    ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_session_tickets on;
    ssl_early_data on;                    # 0-RTT(HTTP/3 优化)

    # ---------- HTTP/3 关键配置 ----------
    http3 on;                              # 启用 HTTP/3
    add_header Alt-Svc 'h3=":443"; ma=86400; persist=1';  # 通知浏览器支持 HTTP/3

    # ---------- 强制 HTTPS 跳转(宝塔自动生成,请勿修改)----------
    set $isRedcert 1;
    if ($server_port != 443) {
        set $isRedcert 2;
    }
    if ( $uri ~ /\.well-known/ ) {
        set $isRedcert 1;
    }
    if ($isRedcert != 1) {
        rewrite ^(/.*)$ https://$host$1 permanent;
    }

    # ---------- 安全增强 ----------
    add_header Strict-Transport-Security "max-age=315360000" always;  # HSTS 启用(可选)
    error_page 497  https://$host$request_uri;                        # 处理 HTTP 请求到 HTTPS 端口

    # ---------- 静态文件缓存 ----------
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires 30d;
        access_log off;
    }
    location ~ .*\.(js|css)?$ {
        expires 12h;
        access_log off;
    }

    # ---------- 敏感文件和目录保护(防止泄露)----------
    location ~* /(\.git|\.svn|\.bzr|\.vscode|\.claude|\.idea|\.ssh|\.github|\.npm|\.yarn|\.pnpm|\.cache|\.husky|\.turbo|\.next|\.nuxt|node_modules|runtime)/ {
        return 404;
    }
    location ~* (\.user.ini|\.htaccess|\.htpasswd|\.env.*|\.project|\.bashrc|\.bash_profile|\.bash_logout|\.DS_Store|\.gitignore|\.gitattributes|LICENSE|README\.md|CLAUDE\.md|CHANGELOG\.md|CHANGELOG|CONTRIBUTING\.md|TODO\.md|FAQ\.md|composer\.json|composer\.lock|package(-lock)?\.json|yarn\.lock|pnpm-lock\.yaml|\.\w+~|\.swp|\.swo|\.bak(up)?|\.old|\.tmp|\.temp|\.log|\.sql(\.gz)?|docker-compose\.yml|docker\.env|Dockerfile|\.csproj|\.sln|Cargo\.toml|Cargo\.lock|go\.mod|go\.sum|phpunit\.xml|phpunit\.xml|pom\.xml|build\.gradl|pyproject\.toml|requirements\.txt|application(-\w+)?\.(ya?ml|properties))$
    {
        return 404;
    }

    # ---------- Let's Encrypt 验证目录放行 ----------
    location ~ \.well-known {
        allow all;
    }
    # 禁止在验证目录放入危险脚本
    if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
        return 403;
    }

    # ---------- PHP 解析----------
    include enable-php-81.conf;   # 根据你的 PHP 版本修改(如 enable-php-74.conf)

    # ---------- 其他包含文件----------
    include /www/server/panel/vhost/nginx/well-known/meowtool.com.conf;
    include /www/server/panel/vhost/nginx/extension/meowtool.com/*.conf;
    include /www/server/panel/vhost/rewrite/meowtool.com.conf;

    # ---------- 日志 ----------
    access_log  /www/wwwlogs/meowtool.com.log;
    error_log   /www/wwwlogs/meowtool.com.error.log;
}

配置两处必填修改项:

  1. 修改域名:全文批量替换 meowtool.com 为自己的网站域名,证书路径、日志路径同步变更。
  2. 修改PHP版本include enable-php-81.conf;,81替换为站点实际PHP版本(74/80/82等)。

修改完成保存配置,重启Nginx服务使配置生效。

HTTP/3在线有效性检测方法

打开第三方权威检测站点,输入域名一键校验QUIC与H3是否成功启用:

检测地址:https://http3check.net/

检测是否生效

页面提示 QUIC is supported、HTTP/3 is supported 即代表配置成功。

WordPress开启H3报错:Undefined array key "HTTP_HOST"修复方案

报错成因说明

开启HTTP/3后协议使用:authority伪头部传递域名,不再携带传统Host请求头,Nginx默认fastcgi规则无法读取参数,PHP程序$_SERVER['HTTP_HOST']为空触发WP警告。

  • HTTP/1.1 / HTTP/2:依靠Host头部传输域名
  • HTTP/3(QUIC):依靠:authority伪头部,无原生Host头

具体修复步骤

打开文件路径:/www/server/nginx/conf/fastcgi.conf,在文件末尾新增一行参数:

fastcgi_param HTTP_HOST $host;

fastcgi.conf尾部添加信息

保存文件,重载Nginx配置,WordPress报错直接消除。

上一篇 想聊聊AI搜索快速发展的当下,传统SEO以后怎么办?
下一篇 推荐5个Chrome浏览器扩展商店,增加你的浏览器体验
随便看看
1 失业后的第7天
失业后的第7天
2
写了一个静态的在线提示词导航网站
写了一个静态的在线提示词导航网站
3
通过宝塔面板开启网站HTTP/3的方法(Nginx教程)
通过宝塔面板开启网站HTTP/3的方法(Nginx教程)
4
滑稽的小橙子
滑稽的小橙子
5
我们是在为SEO写作?还是在为读者写作?还是在为自己?
我们是在为SEO写作?还是在为读者写作?还是在为自己?
2026年6月
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
加载中...