Caddy 比Nginx 还优秀吗

🍄 大家好,我是风筝

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

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

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

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

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

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

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

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

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

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

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

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

Caddy

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

官网:caddyserver.com/

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,托管静态文件)

nginx 复制代码
example.com {
    root * /var/www/html
    file_server
}

Nginx 配置

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 代码像屎山,那是没用下面这三个方法

相关推荐
kovli2 分钟前
红宝书第十七讲:通俗详解JavaScript的Promise与链式调用
前端·javascript
lilye662 分钟前
精益数据分析(19/126):走出数据误区,拥抱创业愿景
前端·人工智能·数据分析
李是啥也不会8 分钟前
Vue中Axios实战指南:高效网络请求的艺术
前端·javascript·vue.js
极客智谷11 分钟前
深入理解Java线程池:从原理到实战的完整指南
java·后端
我的耳机没电了12 分钟前
mySpace项目遇到的问题
后端
xiaoliang12 分钟前
《DNS优化真经》
前端
一只小海獭15 分钟前
了解uno.config.ts文件的配置项---转化器
前端
贾公子18 分钟前
MySQL数据库基础 === 约束
前端·javascript
代码不行的搬运工19 分钟前
HTML快速入门-4:HTML <meta> 标签属性详解
java·前端·html
Chrome深度玩家26 分钟前
如何下载Google Chrome适用于AI语音交互的特制版
前端·人工智能·chrome