用 Caddy 替代 nginx 的一个月

1 月把博客的 nginx 换成了 Caddy，用了一个月，现在又换回了 nginx。讲讲过程。为什么想换 Caddy 最大的卖点是 自动 HTTPS：写个域名在配置文件里，证书自动申请到期自动续期，完全不用管 HTTP 自动跳转 HTTPS，不用写 return 301 对比 nginx：要用 certbot，要写 cron，要管 renewal hook，要处理证书链顺序。这些我都做烦了。配置对比 Caddyfile（整站配置，10 行）： stun.example.com { root * /var/www/camo file_server encode gzip zstd } 完事。证书？不用写。 HTTP→HTTPS？不用写。 nginx 等价配置： server { listen 80; server_name stun.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name stun.example.com; ssl_certificate /etc/letsencrypt/live/.../fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/.../privkey.pem; root /var/www/camo; index index.html; location / { try_files $uri $uri/ =404; } } 20+ 行 + certbot 命令 + cron。那为什么又换回 nginx 两个原因： 1. 调试不友好 Caddy 启动失败时，错误信息有时候很玄学。有一次 reload 报"配置无效"，但定位不到具体行，我对着 20 行的 Caddyfile 看了半小时。 nginx 的报错至少能告诉你第几行第几列。对调试党来说这是刚需。 2. 性能（微妙的）同样配置，Caddy 在我这个 1GB 内存的 VPS 上，空载内存 80MB；nginx 25MB。博客是低流量站点，这个差距不影响，但看着就是不爽。 Caddy 真香的部分公正地说，我有点怀念 Caddy 的自动 HTTPS。换回 nginx 之后我做了件事：写了个 systemd timer，每周跑 certbot renew + nginx reload，把"忘了续期"的风险降到接近 0。这个心里踏实了，就够用。结论个人博客：Caddy 更省心，配置也清爽。生产环境：还是 nginx，文档全、社区大、招人容易。两个都装着，看场景用，没必要站队。