Caddy 是一款功能强大且配置简洁的 Web 服务器,支持自动 HTTPS、反向代理、文件服务器等众多特性,它能够在多种操作系统上进行安装,包括 Debian、CentOS、Ubuntu、Windows、macOS 等 。若想了解更多支持的系统及详细信息,可前往Caddy 官方网站查看。本篇教程将聚焦于 Debian 系统,详细介绍如何在 Debian 系统上安装和配置 Caddy,帮助你快速搭建高效稳定的 Web 服务环境。
一、安装 Caddy
Caddy 官方提供软件源,支持稳定版与测试版安装,以下为详细步骤:
(一)稳定版本安装
1 2 3 4 5 6 7 8 9
| 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
|
(二)测试版本安装(含 Beta / 候选版)
1 2 3 4 5 6 7 8 9
| sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/testing/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-testing-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/testing/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-testing.list
sudo apt update
sudo apt install caddy
|
二、Caddy 模块扩展
Caddy 通过模块化设计实现功能扩展,分为预装模块与自定义模块:
(一)自定义模块安装流程
- 访问Caddy 下载页,选择系统架构(如
Linux AMD64
)及所需插件(如dns.providers.cloudflare
)。
- 下载后上传至服务器,执行权限配置与路径迁移:
1 2 3
| chmod +x caddy_linux_amd64_custom # 添加可执行权限
mv caddy_linux_amd64_custom /usr/bin/caddy # 覆盖默认二进制文件
|
三、核心配置指南:Caddyfile 详解
Caddy 通过纯文本文件/etc/caddy/Caddyfile
配置服务,以下为典型场景配置示例:
(一)静态网站配置(含 HTTPS 与自定义错误页)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| lwxcloud.me { # 基础设置 root * /www/lwxcloud # 根目录,*表示匹配所有请求 encode gzip zstd # 启用压缩(可选)
# 日志系统 log { output file /www/log/lwxcloud.log { # 日志输出到文件 rotate_size 10MB # 日志分割策略(10MB切割) rotate_keep 7 # 保留7天日志 } level info # 日志级别(debug/info/warn/error) }
# HTTPS配置(Cloudflare DNS验证) tls { dns cloudflare YOUR_CLOUDFLARE_API_TOKEN # 替换为实际API令牌 }
# 文件服务器功能 file_server { index index.html index.php # 自定义索引文件 browse off # 禁止目录浏览(生产环境建议关闭) }
# 错误处理 handle_errors { @404 { expression {http.error.status_code} == 404 # 匹配404错误 } rewrite @404 /404.html # 重定向到自定义页面 file_server # 响应重定向后的文件 } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| status.lwxcloud.me { # 反向代理至本地3001端口服务 reverse_proxy { to localhost:3001 header_up X-Forwarded-Proto https # 传递协议头(HTTPS场景必需) timeout 10s # 超时时间 }
# HTTPS配置(同上) tls { dns cloudflare YOUR_CLOUDFLARE_API_TOKEN } }
|