用 Caddy 托管静态站点
这个小站就是用 Caddy 托管的。以前用 Nginx 加 certbot,配置不难,但证书续期、HTTP 跳 HTTPS 这些事每次都要自己处理。换成 Caddy 以后,配置文件只剩几行。
最小配置
example.com {
root * /var/www/html
file_server
}
只要域名的 A 记录指向服务器,80 和 443 端口能从外面访问,Caddy 启动时就会自动申请 Let's Encrypt 证书,并且自动把 HTTP 跳转到 HTTPS。证书到期前它也会自己续,不用再配定时任务。
压缩和缓存
example.com {
root * /var/www/html
encode zstd gzip
header /assets/* Cache-Control "public, max-age=604800"
file_server
}
encode 会根据浏览器支持的格式压缩响应,文字为主的页面通常能小一大半。
自定义 404 页面
handle_errors {
rewrite * /404.html
file_server
}
不加的话,访问不存在的地址只会得到一个空白页。
检查和重载
改完配置先校验,再平滑重载,正在进行的连接不会断:
caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy
几个小坑
- 如果域名开了 CDN 代理,证书验证可能失败。第一次申请证书时最好先关掉。
- Caddy 默认会在
127.0.0.1:2019开一个管理接口,只监听本机。不要把它暴露到公网。 - 日志默认输出到 journald,用
journalctl -u caddy -f就能看。
对个人小站来说,Caddy 省掉的主要是“想起来要续证书”这件事。光这一点就值得换。