1Panel v1 环境下使用 Caddy 实现 HTTP/3
文章目录[隐藏]
前言
1Panel 从 v1.10.3-lts 版本开始,通过自行构建 OpenResty 的方式实现了新版的网站防火墙(WAF),这导致了之前基于原版 OpenResty 实现的HTTP/3偷渡办法、国密等均不再可用。
Caddy与 Nginx, Apache, IIS, OpenResty 等等,同作为 Web 服务器,早在 2020 年底[1]就提供了 HTTP/3 的实验性支持,在 2022 年实现RFC 9114标准的 HTTP/3[2]。
相比于 Nginx 在 1.25.0 版本才添加了对 HTTP/3 的实验性支持[3],毫无疑问 Caddy 在新标准的支持方面走在了时代的前列。
同时由于 Caddy 的轻量性以及配置文件的易编写性,本站遂采用 Caddy 提供 HTTP/3 支持。
本文将讲述的是,在 1Panel 尚未更新 HTTP/3 支持的情况下,如何在保证 1Panel Waf 等功能正常使用的情况下利用 Caddy 实现 HTTP/3。
本站已全站支持 HTTP/3 。
准备条件
- 已安装 1Panel 的服务器一台。
- 相关基础知识。
警告!!!
生产环境中迁移请注意做好备份。
部署
安装 OpenResty
在 1Panel 中,打开应用商店
,安装 OpenResty,更改默认的 HTTP 和 HTTPS 端口,如我这里使用 680 和 6443 。
已安装 OpenResty 的用户,此处建议重装 OpenResty,修改配置文件需要修改docker-compose.yml
,nginx.conf
等文件。大神请忽略。
部署站点
参考创建网站 - 1Panel 文档正常部署站点,注意不要开启 HTTPS,后续的 HTTPS 将由 Caddy 提供支持。
申请 SSL 证书
这里建议采用1Panel 通过 DNS 的方式自动申请续签 SSL 证书的方式,由 Caddy 部署。
1Panel 的证书申请,在这里不再赘述,参考证书概述 - 1Panel 文档。
需要注意的是,在申请的时候启用推送证书到本地目录,然后选择一个本地目录,我这里填写的是/ssl
。
新建 Caddy 配置文件
如图,在 1Panel,容器
-编排
中进入编排路径文件夹。
在此处新建caddy
文件夹,新建Caddyfile
文件,填入
{
servers :443 {
protocols h1 h2 h3
}
}
:443 {
reverse_proxy http://127.0.0.1:680 # 这里的端口填写 OpenResty 的 HTTP 端口
tls /ssl/fullchain.pem /ssl/privkey.pem # 这里的证书根据实际情况填写
}
创建 Caddy 容器
回到 1Panel 的容器编排页面IP:Port/containers/compose
(上图所示页面),点击创建编排
,文件夹填写caddy
,编辑内容如下:
services:
caddy:
container_name: caddy
image: caddy
restart: unless-stopped
network_mode: host
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- /ssl:/ssl
点击确认。
此时将会由 Caddy 提供HTTPS 和 HTTP/3 的支持。
检测
目前最新版本的各类浏览器均已支持 HTTP/3 的访问,可以在浏览器的开发人员工具 - 网络 - 协议中显示为 H3。
也可以通过HTTP/3 Check测试。
参考资料
转自:https://www.anye.xyz/archives/lBP9yIqk
共有 0 条评论