banner
约 600 字
2 分钟

用 Caddy 替代 nginx 的一个月

-
-
无标签

摘要

Caddy 自动 HTTPS 真香,但调试不友好、内存占用高。用了一个月又换回 nginx,写了 systemd timer 管证书续期。

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文档全、社区大、招人容易

两个都装着,看场景用没必要站队

END

相关文章

暂无相关文章