Caddy 比Nginx 还优秀吗

1,174 阅读7分钟

🍄 大家好,我是风筝

🌍 个人博客:【古时的风筝】。

本文目的为个人学习记录及知识分享。如果有什么不正确、不严谨的地方请及时指正,不胜感激。

每一个赞都是我前进的动力。

Nginx 想必每一个开发都听说过吧,一个高性能的反向代理服务器和负载均衡器,同时也是一个轻量级的 Web 服务器,常用于处理并发连接和静态资源服务。

作为一个开发,在你拥有一台自己的服务器之前,可能只有极少数的人自己配置过 Nginx,大多数都停留在简单了解的层面上。

而当你有了自己的服务器后,初次使用 Nginx 大概率会觉得有点繁琐。但是繁琐也没有什么好方法,就是孰能生巧的事儿。以我的经验来讲,其他的配置都还好,复制粘贴基本上没什么问题,最烦人的地方就是HTTPS 协议的 SSL 证书。

之前写了两篇使用 Acme 和 Certimate 自动给证书续期的方法

用acme,免费、无限期使用 SSL(HTTPS)证书,从此实现证书自由了

Certimate SSL 免费证书申请、无限续期很难吗?

但是还是有人觉得不够方便。如果纯站在技术角度的思考,Nginx 结合上面的两种自动证书续期的方式已经很方便了。但是,抛开技术不谈,我们有了自己的服务器要干什么呢,比如搭建个人博客、部署自己的产品,在这样的场景下,稳定快速的上线才是我们的最终目的,中间的环节当然是越快越简单最好了。

基于这样的目的来考虑,最方便的方式是让 Nginx 自动就支持 HTTPS,或者说自带证书,这样就最好了。

但是很可惜,Nginx 目前没有这样的功能,不过有另外一个产品既能当服务器又自带证书,那就是 Caddy。

Caddy

Caddy 和 Nginx 类似,也是 Web 服务器和反向代理服务器。在国内用的比较少,但是在国外很多知名产品都在用。

官网:caddyserver.com/

image.png

1、Caddy 的设计理念是“开箱即用”,默认内置 Let's Encrypt ,自动支持 HTTPS。并且自动处理 TLS 证书的获取和续订,减少了配置复杂度。

这就是上面说的 Nginx 的痛点,当你部署好 Caddy 时,就不用考虑购买证书、续订的事儿了。

2、Caddy 使用简单的 Caddyfile 作为配置文件,也就是Nginx中的 conf 配置文件,但是语法比 Nginx简洁很多。

下面是 Caddy 和 Nginx 配置的对比,Caddy 比 Nginx 简洁,而且Nginx要想支持 HTTPS,还要配置好几行,包括证书位置和使用的算法等。

更多的配置可到官网 caddyserver.com/docs/caddyf… 获取。

Caddy 配置,(自动启用 HTTPS,托管静态文件)

example.com {
    root * /var/www/html
    file_server
}

Nginx 配置

server {
    listen 80;
    server_name example.com;

    location / {
        root /var/www/html;
        index index.html;
    }
}

(默认使用 HTTP,若要启用 HTTPS,需要手动配置 ssl_certificatessl_certificate_key

3、和 Nginx 一样,Caddy 也有插件系统丰富,可动态加载模块。

4、支持 HTTP/3、反向代理、负载均衡和静态文件托管,并且Caddy 是第一款内置支持 HTTP/3 和 QUIC 的 Web 服务器

和 Nginx 的区别

Caddy 的性能虽然也不错,但在极端高负载环境中,通常表现略逊于 Nginx。Nginx 支持更广泛的 企业级场景,如复杂的负载均衡、缓存策略和请求限速。

对于小型项目或需要快速部署 HTTPS,Caddy 是一个不错的选择,比如我们的个人博客,自己做的产品。

对于大型企业级应用,Nginx 仍然是成熟的选择。

最后

如果你有自己部署服务的需求,不妨试试 Caddy。

只能说学习成本极低,部署效率极高,而且不用浪费精力搞 HTTPS 证书。

还可以看看风筝往期文章

用这个方法,免费、无限期使用 SSL(HTTPS)证书,从此实现证书自由了

为什么我每天都记笔记,主要是因为我用的这个笔记软件太强大了,强烈建议你也用起来

「差生文具多系列」最好看的编程字体

我患上了空指针后遗症

一千个微服务之死

搭建静态网站竟然有这么多方案,而且还如此简单

被人说 Lambda 代码像屎山,那是没用下面这三个方法