参考文档:

https://caddyserver.com

一:caddy介绍

Caddy 是一款现代化的 Web 服务器,专为简化开发者和运维人员的工作流程而设计。它最大的特点是自动化和易用性,尤其是内置的自动 HTTPS 功能,使得部署安全的 Web 服务变得前所未有的简单。
相比于传统的 Web 服务器(如 Nginx、Apache),Caddy 的目标是通过更简洁的配置、更智能的功能来减少人为出错的可能性,并提升部署效率。

caddy主要亮点:

  1. 自动 HTTPS:Caddy 是第一款默认支持自动 HTTPS 的 Web 服务器。通过内置与 Let's Encrypt 的集成,Caddy 能够自动生成、管理和续订 SSL 证书。用户无需手动设置复杂的证书路径或担心证书过期问题。
  2. 简单配置文件:Caddy 使用直观易懂的配置语法,让初学者也能快速上手。相比 Nginx 的复杂配置,Caddy 的配置文件更短小精悍。
  3. 内置反向代理:Caddy 内置反向代理功能,支持负载均衡、健康检查和动态路由,非常适合现代微服务架构。用户可以轻松配置 Caddy 作为网关,无需安装额外插件。
  4. 丰富的插件支持:Caddy 提供模块化架构,允许开发者轻松扩展其功能。官方和社区维护了许多插件,如文件缓存、认证管理和日志分析工具。
  5. 支持多种协议:除了 HTTP 和 HTTPS,Caddy 还支持 gRPC、HTTP/2 和 HTTP/3 等现代协议,提供更高效的传输性能。
  6. 高效性能和轻量化设计:Caddy 使用 Go 语言编写,启动速度快,占用资源少,特别适合云原生和容器化部署场景。

二:caddy和nginx对比

特性CaddyNginx
易用性配置简单,几乎零门槛,自动处理 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

huaweichenai
679 声望114 粉丝