caddy
Caddy 是一款开源的 Web 服务器,它是一个快速、可靠、安全的 HTTP/2 服务器,具有自动 HTTPS、模块化的配置、插件化的架构等特性
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
# caddy 使用说明 $ caddy # 启动 caddy (阻塞执行, 默认端口 2019) $ caddy run # 查看 caddy 配置信息 (json 格式, 无配置返回 null) $ curl localhost:2019/config/ > null # 后台启动 caddy $ caddy start # 停止 caddy $ caddy stop # 重载服务, 进行中的服务请求不会中断 $ caddy reload
全局配置用于设置一些全局的配置项,比如监听的端口、日志级别、默认网站根目录等
全局配置必须在文件顶部, 且必须是第一个代码快
{ debug log { # 日志输出(默认 stderr), 可选标准输出: stdout, 忽略: discard, 文件: file /path/to/log.txt output file /root/log/caddy.log { roll_size 50mb # 每个日志文件大小 (默认 100MB) roll_keep 5 # 保留日志文件个数 (默认 10) roll_keep_for 7h # 保留日志文件时间 (默认 2160h 90天) roll_local_time # 使用本地时间 (默认 UTC 时间) roll_uncompressed # 日志文件是否压缩 } # 日志格式, 可选: console, json, 自定义格式 format console { time_format wall level_format upper time_local true } # 日志级别, 仅有 ERROR 和 INFO 两种日志, 可选: ERROR, INFO level INFO } }
- 服务接口
- 静态文件服务器
- 反向代理配置
# Caddyfile 配置 2024 端口, 响应 Hello, Caddy! localhost:2024 { respond "Hello, Caddy!" } $ curl localhost:2024 > Hello, Caddy! $ curl localhost:2019/config/ > {"apps":{"http":{"servers":{"srv0":{"listen":[":2024"],"routes":[{"handle":[{"body":"hello caddy!","handler":"static_response"}]}]}}}}} # 指定配置文件(不指定会在当前路径寻找 Caddyfile) $ caddy run --config /path/to/Caddyfile
# 静态文件服务器(配置文件路径列表) :2023 { file_server browse } # 指定路径为 caddy 文件列表 # http://localhost:2023 => /root/temp :2023 { root * /root/temp file_server browse }
# localhost:2026 代理 8010 8011 端口服务, 并设置轮询 :2026 { reverse_proxy { to localhost:8010 localhost:8011 lb_policy random } } # round_robin 轮询 # random 随机 # least_conn 最少连接数 # ip_hash 根据 IP 哈希 # url_hash 根据 URL 哈希 # first 第一个可用的服务
api 接口
Section titled “api 接口”# 获取服务配置 config 后可以接 json 路径 $ curl localhost:2019/config/ | jq $ curl localhost:2019/config/apps/http/servers | jq # 停止服务 $ curl -X POST localhost:2019/stop/ # 获取服务状态 $ curl localhost:2019/status/ # 获取服务统计信息 $ curl localhost:2019/stats/ # 重载服务配置 $ curl -X POST localhost:2019/reload/ # 重新加载 TLS 证书 $ curl -X POST localhost:2019/load_certs/ # 重新加载插件 $ curl -X POST localhost:2019/load_plugins/ # 重新加载模块 $ curl -X POST localhost:2019/load_modules/ # 重新加载主题 $ curl -X POST localhost:2019/load_themes/ # 重新加载所有配置 $ curl -X POST localhost:2019/load_all/