体验QUIC: Caddy与Nginx共存

众所周知宝塔目前不支持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. 其他问题 -> 我没遇到我也不知道怎么办, 可以发出来大家一起看看

© 版权声明
THE END
喜欢就支持一下吧
点赞8.7W+打赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容