Caddy 是一个使用 Go 语言编写的现代化的 Web 服务器,以其简洁的配置和自动 HTTPS 功能而著称。自 2014 年开源以来,Caddy 因其零配置实现 HTTPS、无需安装等特点,在众多 Web 服务器中占有一席之地,深受开源爱好者的喜爱。Caddy 支持 HTTP/1.1 和 HTTP/2,提供虚拟主机、原生的 IPv4 和 IPv6 支持、静态文件分发、反向代理等功能。
一、Caddy 的特点
易用性:Caddy 提供了一个简洁的 Caddyfile 配置文件,易于理解和编写,同时支持 JSON 格式的配置,提供了 RESTful API,便于自动化管理。
自动 HTTPS:Caddy 内置了自动 TLS 功能,可以自动为网站启用 HTTPS,通过 Let's Encrypt 服务获取并自动续签 SSL 证书,降低维护成本。
插件系统:Caddy 支持 Go 语言的插件系统,可以方便地扩展各种功能,社区已经开发了许多插件,满足不同的业务需求。
多平台支持:Caddy 支持 Linux、Windows、macOS 等多种操作系统,且没有运行时依赖。
高性能:作为 Go 语言开发的服务器,Caddy 保证了高效的并发处理能力。
二、Caddy 的安装与配置
Caddy 可以通过下载二进制文件或在 Linux 系统中使用包管理工具进行安装。安装完成后,可以通过 Caddyfile 或 JSON 格式的配置文件进行配置,也可以通过 API 动态更新配置。Caddy 还支持 Docker 镜像安装,提供了灵活的部署方式。
在 Ubuntu 中使用如下命令安装
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
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
Redhat 或者 CentOS ,则使用如下命令安装
yum install yum-plugin-copr
yum copr enable @caddy/caddy
yum install caddy
配置:
一个简单的 Caddyfile 示例
# 域名,可以是多个域名,用空格隔开
dcjg.com {
root /var/www/html
tls admin@dcjg.com
gzip
log /var/log/caddy/access.log combined
# 反向代理到后端服务
proxy / localhost:8080 {
websocket
transparent
}
# 基本身份验证
auth /admin user:password
}
多个服务器配置
dcjg.com {
# dcjg.com 的配置
}
two.dcjg.com {
# two.dcjg.com 的配置
}
一旦配置完成,可以通过命令行启动 Caddy
caddy -conf /path/to/Caddyfile
常用命令
caddy adapt ## 加载配置文件
caddy fmt ## 格式化配置
caddy start ## 启动服务
caddy reload ## 重新部署
三、Caddy 与 传统服务器的比较
相比于传统的 Nginx 或 Apache,Caddy 的一个显著优势是其自动 HTTPS 功能,简化了 SSL 证书的管理流程。此外,Caddy 的配置文件结构和语法更加简洁,易于上手,而且 Caddy 作为一个整体只有一个可执行文件,减少了因依赖问题导致的故障风险。
总结
Caddy 作为一个现代化的 Web 服务器,以其简洁易用的配置、自动 HTTPS 支持和强大的插件系统,成为了一个值得关注的选项。无论对于初学者还是有经验的开发者,Caddy 都能够提供一种高效、安全的 Web 服务部署方式。随着 Caddy 的不断发展和完善,它在未来的 Web 服务器市场中将发挥越来越重要的作用。
仓库地址:https://github.com/caddyserver/caddy