众所周知宝塔目前不支持Caddy的部署, Nginx各版本目前暂时不支持HTTP3(除了beta版本). 为了体验HTTP3, 我的解决方案如下, 供各位参考
首先使用宝塔按照常规编译安装Nginx等环境.
然后, 下面开始部署caddy.
参考Caddy的官网Docs: https://caddyserver.com/docs
可以普通地安装: 逐条输入以下命令(推荐使用Debian或Ubuntu. CentOS8已经停止支持了不推荐)
参考https://caddyserver.com/docs/install#debian-ubuntu-raspbian
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo tee /etc/apt/trusted.gpg.d/caddy-stable.asc
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
或者Docker部署(个人觉得挺麻烦), 这个我没试过, 就不写了.
Caddy安装完毕后, 不要马上启动. 需要进行下面的设置
1. 宝塔开放444端口(Both TCP and UDP), 如果用了国内VPS注意防火墙开放444TCP和444UDP. 444是我们给Caddy的端口
2. 修改Caddy配置.
SSH终端输入 nano /etc/caddy/Caddyfile (这是默认的Caddy配置文件地址), 如果Docker部署就进入Docker改Caddyfile, 但我不知道这个文件是否也保存在容器的/etc/caddy文件夹里
修改内容如下:
画横线的就是需要按照你的实际情况修改的地方
{
admin off
auto_https off
servers {
protocol {
experimental_http3
}
}
}
https://域名:444 {
tls 证书文件路径 密钥文件路径
// 下面是反向代理的设置, 可以参考以下. 如果是要访问文件, 参考Caddy官方文档就行. (复制记得把这一行删掉)
reverse_proxy 127.0.0.1:程序端口 {
header_up X-Forwarded-For {remote_host}
header_up Host {upstream_hostport}
header_up X-Real-IP {remote}
}
}
其中的444就是我们为Caddy留的端口.
nano输入完毕按Ctrl + S保存, Ctrl + X退出. 然后终端输入caddy validate 对配置文件进行验证, 如果有错Caddy会告诉你
返回Valid configuration(翻译: 有效的配置), 就表示配置文件没什么错误了. 再输入caddy fmt --overwrite 格式化配置文件.
3. systemd持久化
终端输入nano /usr/lib/systemd/system/caddy.service. 然后把里面的内容改了, 如下
画横线的是需要你根据实际情况改的地方. 当然/usr/bin/caddy 是默认的caddy的路径, /etc/caddy/Caddyfile是默认的配置文件路径, 一般不用改.
[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target
[Service]
Type=notify
User=caddy
Group=caddy
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
nano输入完毕按Ctrl + S保存, Ctrl + X退出. 然后终端输入systemctl daemon-reload, 然后终端输入systemctl start caddy启动caddy.
可以输入systemctl status caddy查看运行状态.
最后, 配置宝塔.
常规流程配置好SSL等东西. 用了反代的也要配置Nginx的反代.
然后进入宝塔的网站设置, 找到"配置文件"点进去
找到listen 443 ssl http2, 下面加一行: add_header Alt-Svc 'h3=":444"; ma=86400,h3-29=":444"; ma=86400';
然后找到ssl_protocols这一行, 改为ssl_protocols TLSv1.2 TLSv1.3;
到这就配置完毕了.
实际上, 鉴于目前国内CDN都不怎么支持QUIC访问, 更不用说回源, 用了CDN的没必要折腾这个.
我个人用虚拟内网(Zerotier)访问服务器的code-server和网盘, 就需要这个, 实测速度快, 尤其是非首次连接. (首次连接也很快)
腾讯云最近支持QUIC访问了, 但QUIC请求数居然是收费的, 淦
常见的问题:
1. 端口被占用. -> 安装好Caddy别立即启动, 上面说的444就是避免端口冲突的给Caddy的端口
2. 浏览器并没有使用HTTP3, 而是默认的HTTP2 -> 把你电脑的魔法暂时关掉, 暂时只能这样.
3. Websocket不通 -> Nginx的反向代理没配置, 或者没配置对. 已知Websocket还是默认走443端口, 由Nginx处理(其他的走444端口, HTTP3)
4. 其他问题 -> 我没遇到我也不知道怎么办, 可以发出来大家一起看看
|
|