百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

为什么越来越多的人放弃 Nginx,选择 Caddy?

off999 2025-02-18 12:46 21 浏览 0 评论

1. 什么是 Caddy?

Caddy 是一款现代化的 Web 服务器,专为简化开发者和运维人员的工作流程而设计。它最大的特点是自动化和易用性,尤其是内置的自动 HTTPS 功能,使得部署安全的 Web 服务变得前所未有的简单。

相比于传统的 Web 服务器(如 Nginx、Apache),Caddy 的目标是通过更简洁的配置、更智能的功能来减少人为出错的可能性,并提升部署效率。

支持 API 和配置文件两种方式:

您可以在同一台服务器上同时使用 API 和配置文件,但我们不建议这样做:最好有一个真相来源。

API

配置文件

使用 HTTP 请求进行配置更改

使用 shell 命令进行配置更改

易于扩展

难以扩展

难以手工管理

易于手工管理

Caddyfile的结构


要点

  • ? 一个可选的 全局选项块 可以是文件中第一个内容。
  • ? 代码段 或 命名路由 可以选择性地出现在下一个位置。
  • ? 否则,Caddyfile 的第一行始终是将要服务的站点的 地址。
  • ? 所有 指令 和 匹配器 必须放在站点块中。站点块之间没有全局范围或继承关系。
  • ? 如果只有一个站点块,则其花括号 { } 是可选的。

Caddyfile 由至少一个或多个站点块组成,这些站点块始终以一个或多个站点的地址开头。出现在地址之前的任何指令都会让解析器感到困惑。


2. Caddy 的主要功能亮点

自动 HTTPS

Caddy 是第一款默认支持自动 HTTPS 的 Web 服务器。通过内置与 Let's Encrypt 的集成,Caddy 能够自动生成、管理和续订 SSL 证书。用户无需手动设置复杂的证书路径或担心证书过期问题。

示例: 在配置文件中,仅需指定域名:

example.com  
file_server  

Caddy 会自动为 example.com 配置 HTTPS,无需额外操作。

简单配置文件

Caddy 使用直观易懂的配置语法,让初学者也能快速上手。相比 Nginx 的复杂配置,Caddy 的配置文件更短小精悍。

示例对比: 在 Nginx 中配置一个静态文件服务:

server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    location / {
        try_files $uri $uri/ =404;
    }
}

在 Caddy 中实现相同功能,仅需:

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

内置反向代理

Caddy 内置反向代理功能,支持负载均衡、健康检查和动态路由,非常适合现代微服务架构。用户可以轻松配置 Caddy 作为网关,无需安装额外插件。

示例

example.com {  
    reverse_proxy /api/* 127.0.0.1:8080  
}  

通过 API 方式配置更为简单:

caddy reverse-proxy \
 --from example.com \
 --to https://127.0.0.1:9000 \
 --change-host-header

丰富的插件支持

Caddy 提供模块化架构,允许开发者轻松扩展其功能。官方和社区维护了许多插件,如文件缓存、认证管理和日志分析工具。

支持多种协议

除了 HTTP 和 HTTPS,Caddy 还支持 gRPC、HTTP/2 和 HTTP/3 等现代协议,提供更高效的传输性能。

高效性能和轻量化设计

Caddy 使用 Go 语言编写,启动速度快,占用资源少,特别适合云原生和容器化部署场景。


3. Caddy 与 Nginx 的对比

特性

Caddy

Nginx

易用性

配置简单,几乎零门槛,自动处理 HTTPS

配置灵活,但语法复杂,学习曲线较陡

HTTPS 支持

默认自动 HTTPS,免去证书管理

需手动配置证书和续订

插件扩展

模块化设计,支持动态加载插件

插件需编译到核心模块,使用不够灵活

性能表现

性能优异,适合现代协议

长期优化的高性能,适合高并发场景

社区生态

社区逐渐壮大,官方维护活跃

历史悠久,社区广泛,生态成熟


4. 使用 Caddy 的简单教程

安装 Caddy

安装 Caddy 十分简单,以下是常见的安装方法:

  • ? 通过包管理器(适用于 Linux 系统):
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

配置 Caddy 文件

Caddy 的核心配置文件通常命名为 Caddyfile。以下是一个基础示例:

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

启动和测试

通过以下命令启动 Caddy:

caddy run  

访问 http://example.com,您即可看到网站成功运行!


5. 哪些场景适合使用 Caddy?

  • ? 中小型项目快速部署:无需深入研究复杂配置文件,即可实现高质量服务。
  • ? HTTPS 必备场景:自动化证书管理,省时省力。
  • ? 现代微服务架构:内置反向代理,支持多协议和动态负载均衡。
  • ? 个人开发者和小团队:对技术门槛要求低,能快速实现生产级服务。

相比之下,如果您的项目需要极高的性能优化或者复杂的企业级流量管理,Nginx 可能是更合适的选择。


如果您的项目不需要高并发和复杂流量管理,Caddy 足以替代 Nginx 并提供极好的使用体验;但在更复杂的生产环境中,Nginx 仍然是不可替代的强大工具。

文档:https://caddyserver.com.cn/docs

Github:https://github.com/caddyserver/caddy

相关推荐

用python3 实现生成二维码代码示例

要实现生成离线二维码,你可以使用qrcode库。下面是一个示例代码:```pythonimportqrcode#生成离线二维码函数defgenerate_qr_code(image_path,...

在 Excel 中实现二维码生成+手机扫码功能,可通过以下 3 种方法操作

在Excel中实现二维码生成+手机扫码功能,可通过以下3种方法操作(附详细步骤):方法1:插入二维码图片(静态)适用:快速生成固定内容的二维码步骤:安装二维码插件(如「BarcodeFon...

Python 生成条形码、二维码 (Code 128、EAN-13、QR code等)

条形码和二维码是现代信息交换和数据存储的重要工具,它们将信息以图形的形式编码,便于机器识别和数据处理,被广泛应用于物流、零售、医疗、教育等各领域。本文将介绍如何使用Python快速生成各种常见的条形码...

Python制作二维码_python制作二维码 插件

文/陈新龙二维码又称二维条码,是用某种特定的几何图形按一定规律在平面(二维方向上)分布的、黑白相间的、记录数据符号信息的图形。而不同种类的二维码遵循的规律就是码制,常用的码制有:DataMatrix...

python如何实现二维码的生成和识别

安装:pipinstallmyqrpipinstallpyzbrpipinstallpil报错请切换pipinstallpillow最后,小编想说:我是一名python开发工程师,...

Python 虚拟环境是什么?它到底是怎么工作的?

刚开始学Python的时候,经常有人会告诉你一句话:“一定要用虚拟环境!”那问题来了:什么是虚拟环境?它为什么这么重要?它背后到底是怎么运作的?先看问题:依赖地狱Python项目往往依赖很多第三...

trae 配置 python 开发环境_python interpreter配置

安装python解释器安装包Anaconda3-2021.05对应python3.8.8版本(兼容win7的最新的Anaconda安装包)安装的时候,选择设置path路径。下载地址mirro...

零基础学MCP(2)| MCP 开发环境配置

2025最新实战指南:10分钟搭建跨平台MCP开发环境,支持Python/Node.js双生态一、环境准备:跨平台兼容方案在开始MCP开发前,确保你的系统满足以下条件:组件要求检测命令操作系统Wind...

实用小技巧:三分钟教会在python使用虚拟环境(virtualenv)

简介virtualenv可以通过搭建虚拟且独立的Python环境,将我们所需的依赖安装进去。这样就可以使每个项目环境与其他项目独立开来,保持环境的干净,同时也解决了包冲突的问题注意win使用虚拟环...

一键搞定环境变量配置:管理员权限下的.bat脚本神器

在Windows系统运维与开发场景中,环境变量配置堪称基础却棘手的环节。手动操作不仅步骤繁琐,还易因路径拼写错误、权限不足导致配置失效。今日热贴中这款“快速设置环境变量脚本.bat”,正以自动化优势...

如何在PyCharm中配置虚拟环境?_pycharm使用虚拟环境

若要使用PyCharm工具开发Flask程序,既可以另行创建新的虚拟环境,也可以使用创建好的虚拟环境进行开发。接下来,在PyCharm工具中新建一个项目,并为该项目配置虚拟环境flask_env。首次...

在MBP上面设置python虚拟环境三步骤

为测试python脚本需求新搞了一台MBP,平常用惯了Windows系统,还没在MAC上整过,经过实践整理配置步骤如下,给有同样需求的小伙伴们参考第一步:pipinstall安装前先确认自己已经安装...

MCP零基础学习(2):开发环境配置指南

2025全新实战指南:10分钟搭建跨平台MCP开发环境,兼容Python与Node.js双生态一、环境准备:跨平台兼容方案在开始MCP开发前,确保你的系统满足以下条件:组件要求检测命令操作系统Wind...

Flask框架学习之环境配置_flask框架安装与配置

Flask框架作为轻量级Web应用框架,最大的特征是轻便灵活,第三方库的选择面广,容易上手,试错成本低。为了帮助大家学习并掌握Flask框架,本文将会带着大家一步步的完成Flask安装的环境配置工作,...

Python 模型部署不用愁!容器化实战,5 分钟搞定环境配置

你是不是也遇到过这种糟心事:花了好几天训练出的Python模型,在自己电脑上跑得顺顺当当,一放到服务器就各种报错。要么是Python版本不对,要么是依赖库冲突,折腾半天还是用不了。别再喊“我...

取消回复欢迎 发表评论: