本文将指导如何在 Debian 和 Ubuntu 下安装 Caddy。
以下操作需要 root 权限,本文命令均已带上 sudo 前缀,请确保当前用户拥有 sudo 权限;或者直接使用 root 用户操作并省略命令中的 sudo。
#什么是 Caddy?
Caddy 是一款开源的 Web 服务器,它设计简单,易于使用,并且有很多强大的功能。它可以自动处理 TLS (SSL),并且可以使用中间件扩展功能。
Caddy 采用简单的配置语法,可以轻松配置路由,反向代理,重定向,缓存和其他功能。它还支持 HTTP/2,QUIC (HTTP/3) 和 WebSockets 协议,可以提供快速的网络性能。
#为什么尝试 Caddy?
对我来说比较简单的原因是 nginx-quic 这个项目一直未发布正式版,想要一款简单的能支持 HTTP/3 的 Web 服务器软件,目前来说 Caddy 的选择是最合适的。
Caddy 还支持自动化证书,对于懒人来说特别合适。
#安装 Caddy
我们按照官方的安装方法,首先,安装一些必要的软件包:
然后加入 Caddy 的 GPG 公钥和 apt 源:
Debian 下也可以使用 extrepo:
然后更新系统后即可安装 Caddy:
#配置 Caddy
默认的 Caddyfile 文件位于 /etc/caddy/Caddyfile,官方的教程在这儿,如果你习惯了 Nginx 和 Apache 的配置,那么此时应该会非常不习惯,我们就来一个最简单的例子把:
- 我们需要绑定域名
example.com - 这个域名的文件位于
/var/www/example.com,默认首页文件名为index.html - 我们需要开启 SSL 访问,并且访问 http 跳转到 https
- 我们需要设置开启 TLS 1.2 和 TLS 1.3,并开启 HSTS Preload
首先,设置 http://example.com/ 跳转到 https://example.com/:
注意:默认情况如果下面的 example.com:80 和 example.com:443 没有配置其他的端口,Caddy 会自动使用 443 端口,并自动开启 http://example.com/ 跳转到 https://example.com/,这里的示范是为了给有些奇怪的需求比如一些特定的端口访问 HTTP 和 HTTPS,则需要手动配置。
然后我们按照 Mozilla 的推荐配置写入 Caddyfile:
当然也可以设置 www.example.com 跳转 example.com:
然后把以上所有内容合并成一个 Caddyfile 文件,放到 /etc/caddy/Caddyfile,然后检查 Caddy 配置:
输出如下内容则表示配置正确:
有强迫症的也可以把你的 Caddyfile 文件美化一下:
最后重启 Caddy
耐心等待自动签发 SSL 证书,然后我们就可以打开浏览器控制台查看 https://example.com/ 即可看到 SSL 证书已经自动部署,同时 HTTP/3 已经开启了:

更多的配置可以参考官方文档或《Caddyfile 语法浅析》









