不是因为 Nginx 不好,而是因为我不想再为「证书续期」这件事操心了。
那件事
每年总有那么一两次,我会在某个早上收到浏览器的大红警告, 然后想起来:哦,证书过期了。
原因每次都差不多 —— certbot 的续期任务失败了,但我没看邮件。 失败的原因也五花八门:DNS 临时解析不了、webroot 路径被改了、 某个服务占了 80 端口、或者单纯是 systemd timer 没触发。
六年里大概发生过四五次。每次修好要二十分钟, 但那种「随时可能挂」的感觉一直在。
换过来之后
Caddyfile 里写的就一行:
txt
example.com {
root * /srv
file_server
}1
2
3
4
2
3
4
第一次启动它会去申请证书,之后每 60 天自动续期, 续完自己 reload,不需要任何定时任务。
我已经跑了一年多,没有收到过一次证书警告。
性能上有区别吗
我的场景下没有可测量的区别。都是静态文件服务, Caddy 的 HTTP/2 和 HTTP/3 是默认开的,Nginx 需要额外配置。
如果做反向代理扛高并发,Nginx 的调优空间确实更大。 但个人站点的瓶颈从来不在 Web 服务器上。
什么时候我还是会用 Nginx
- 需要非常精细的
location匹配和rewrite规则 - 团队里所有人都熟悉 Nginx,换掉的学习成本不划算
- 需要一些只有 Nginx 模块才有的功能(比如某些 WAF 集成)
一句话总结
Caddy 用一点灵活性,换掉了整整一类运维事故。 对我这种一个人维护几个小站点的人来说,这笔交易很划算。