参考文档:
一:caddy介绍
Caddy 是一款现代化的 Web 服务器,专为简化开发者和运维人员的工作流程而设计。它最大的特点是自动化和易用性,尤其是内置的自动 HTTPS 功能,使得部署安全的 Web 服务变得前所未有的简单。
相比于传统的 Web 服务器(如 Nginx、Apache),Caddy 的目标是通过更简洁的配置、更智能的功能来减少人为出错的可能性,并提升部署效率。
caddy主要亮点:
- 自动 HTTPS:Caddy 是第一款默认支持自动 HTTPS 的 Web 服务器。通过内置与 Let's Encrypt 的集成,Caddy 能够自动生成、管理和续订 SSL 证书。用户无需手动设置复杂的证书路径或担心证书过期问题。
- 简单配置文件:Caddy 使用直观易懂的配置语法,让初学者也能快速上手。相比 Nginx 的复杂配置,Caddy 的配置文件更短小精悍。
- 内置反向代理:Caddy 内置反向代理功能,支持负载均衡、健康检查和动态路由,非常适合现代微服务架构。用户可以轻松配置 Caddy 作为网关,无需安装额外插件。
- 丰富的插件支持:Caddy 提供模块化架构,允许开发者轻松扩展其功能。官方和社区维护了许多插件,如文件缓存、认证管理和日志分析工具。
- 支持多种协议:除了 HTTP 和 HTTPS,Caddy 还支持 gRPC、HTTP/2 和 HTTP/3 等现代协议,提供更高效的传输性能。
- 高效性能和轻量化设计:Caddy 使用 Go 语言编写,启动速度快,占用资源少,特别适合云原生和容器化部署场景。
二:caddy和nginx对比
特性 | Caddy | Nginx |
---|---|---|
易用性 | 配置简单,几乎零门槛,自动处理 HTTPS | 配置灵活,但语法复杂,学习曲线较陡 |
HTTPS 支持 | 默认自动 HTTPS,免去证书管理 | 需手动配置证书和续订 |
插件扩展 | 模块化设计,支持动态加载插件 | 插件需编译到核心模块,使用不够灵活 |
性能表现 | 性能优异,适合现代协议 | 长期优化的高性能,适合高并发场景 |
社区生态 | 社区逐渐壮大,官方维护活跃 | 历史悠久,社区广泛,生态成熟 |
三:caddy安装
1: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 run
caddy配置文件地址:/etc/caddy/Caddyfile
2:docker安装
docker pull caddy
docker run -d -p 80:80 -p 443:443 --name caddy caddy
使用docker-compose.yml安装caddy
新建一个docker-compose.yml文件:
services:
caddy:
image: caddy
restart: unless-stopped
cap_add:
- NET_ADMIN
ports:
- "8087:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./site:/srv
- caddy_data:/data
- caddy_config:/config
volumes:
caddy_data:
caddy_config:
创建一个Caddyfile文件,内容为:
:80 {
# Set this path to your site's directory.
root * /usr/share/caddy
# Enable the static file server.
file_server
# Another common task is to set up a reverse proxy:
# reverse_proxy localhost:8080
# Or serve a PHP site through php-fpm:
# php_fastcgi localhost:9000
}
镜像构建并启动容器
docker compose up -d
如果你修改了Caddyfile文件执行下面的命令重启caddy服务
docker compose exec -w /etc/caddy caddy caddy reload
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。