最近几天折腾了一下caddy和nginx,犹豫了很久,还是切换回nginx了。下面简单说说为什么。
Caddy的优点是它最大的卖点,就是自动ssl。只需要在配置文件里增加一个domain,就可以自动开启ssl加密;而在nginx这边,实现同样的效果需要先certbot certonly --nginx -d xxx.domain.com
获得证书之后才行。对于快速部署新网站,关注内容而不用浪费心机去操心这些geek的东西的人来说确实很方便。
除了自动ssl,还有简化的reverse_proxy、一个file_server就搞定静态内容呈现、php-fastcgi一键pass到php-fpm等等,在编程语言那边叫做语法糖的东西,使得caddy在大多数情况下都是新人站长的好选择。
接下来就要说差劲的部份了。首先是caddy比较新,遇到想要实现的效果自己又不会的情况,google一下很难得到解决方案。这就导致了需要花费很多时间去试错,读完文档、看完其他人的Q&A之后基本上还得摸索一通才能解决。而nginx就不一样了,用户众多,你遇到的都有人遇到过,直接C+V就可以解决了。至今我都没搞明白的一个问题就是,如何在caddy中国呢reverse_proxy附加上客户端ip等等信息,让nextcloud不显示反向代理头部错误的警告。其次,nginx已经成熟的stream在caddy还是没有官方实现的一个功能,这个能够干什么当然是“懂的都懂”,这也是我放弃caddy的一个重要原因。第三是对于小鸡来说,caddy动不动40多50m的内存占用比起nginx的20m左右,实在是太多了。扩展一点来说,caddy虽然声称自己可以zero downtime,但是每次reload都是打断连接的;而nginx的reload是真·不断的——这一点可以从走proxy的ssh上确认。
所以最终我还是回到了nginx的怀抱。浪费了比较多的时间,就当是增加了经验吧。