由于 1Panel 更新了 OpenResty 镜像 ,本文的操作已失效,仅作学习记录。实现 HTTP/3 请见最新文章。
前言
简介
HTTP/3 的基础即谷歌多年探索的基于 UDP 的 QUIC 协议。与 TCP 相比,使用 UDP 可以提供更大的灵活性,并且可以使 QUIC 完全于用户空间中实现——对协议实现的更新不像 TCP 那样需要绑定到操作系统更新。使用 QUIC,可以简单地将 HTTP 级别的流映射到 QUIC 流的顶部,从而继承 HTTP/2 的所有优点,而不会产生队头阻塞。
优势
HTTP/3 利用 QUIC 加速 HTTP 请求,QUIC 提供比 TCP 和 TLS 更高的加密和性能。
QUIC 是一种默认加密的新传输协议,旨在加快 HTTP 传输速度以及使其更加安全。
HTTP/3 基于 UDP,如果数据包丢失,只会中断一个流,而不会中断所有流,提高了同时获取多个对象的性能。
支持 0-RTT,消除服务器的 TLS 确认,使后续连接的启动速度更快。
这里就不再过多阐述HTTP/3的各种优势,直接进入部署阶段。
准备条件
已安装 1Panel 的服务器一台,已经正确配置好了 HTTPS 站点。
相关基础知识
警告!!!
OpenResty 中的 HTTP/3 模块目前是实验性的,用于生产环境请使用者自行承担风险。
部署
切换OpenResty镜像版本
在 1Panel 中,打开 应用商店
,找到已安装的 OpenResty,点击 参数
,编辑
,高级设置
,将 image
更改为 openresty/openresty:1.25.3.1-2-focal
,如:
image: openresty/openresty:1.25.3.1-2-focal
确认,重建应用。
编辑站点配置文件
对于默认站点
首先确认你的服务器是否选定了默认站点。
若未设置请跳过。
若设置了默认站点,请先进行其他站点的配置,最后再来看这一部分。
点击
配置
进入网站设置,点击配置文件
,在
listen 443 ssl http2 default_server;
的下方添加一行,注意看注释内容:
listen 443 quic reuseport default_server; # 配置HTTP/3的第一个站点写这个,建议设置在根域名站点上。
listen 443 quic default_server; # 非第一个站点写这个
一个 OpenResty 的完整配置文件中只能出现一次 reuseport
参数。
Alt-Svc
请求头的添加参考下面的部分
保存并重载
注意:若要取消默认站点等操作,需要先删除第1、2条参加的配置。
一键部署、运行环境、静态网站
点击
配置
进入网站设置,点击配置文件
,在
listen 443 ssl http2;
的下方添加一行,注意看注释内容:
listen 443 quic reuseport; # 配置HTTP/3的第一个站点写这个,建议设置在根域名站点上。
listen 443 quic; # 非第一个站点写这个
一个 OpenResty 的完整配置文件中只能出现一次 reuseport
参数。
下方找到
add_header Strict-Transport-Security "max-age=31536000";
在这一条下面添加内容:
add_header Alt-Svc 'h3=":443"; ma=2592000';
保存并重载
反向代理站点
点击
配置
进入网站设置,点击配置文件
,在
listen 443 ssl http2;
的下方添加一行,注意看注释内容:
listen 443 quic reuseport; # 配置HTTP/3的第一个站点写这个,建议设置在根域名站点上。
listen 443 quic; # 非第一个站点写这个
一个 OpenResty 的完整配置文件中只能出现一次 reuseport
参数。
在
基本
,反向代理
,点击源文
,在
add_header Strict-Transport-Security "max-age=31536000";
这一条下面添加内容:
add_header Alt-Svc 'h3=":443"; ma=2592000';
保存并重载
若以上过程均未报错,恭喜你的配置填写正确!
开放端口
在 主机
,防火墙
中,创建端口规则,放开 UDP 协议的 443 端口。
如果使用的是云服务器,请至安全组开放 UDP 协议的 443 端口。
检测
目前最新版本的各类浏览器均已支持 HTTP/3 的访问,可以在浏览器的开发人员工具 - 网络 - 协议中显示为 H3。
也可以通过 LiteSpeed 提供的站点 测试。