ZY 的笔记

用 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 省掉的主要是“想起来要续证书”这件事。光这一点就值得换。

← 返回文章列表