Caddy安装配置教程

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 通过模块化设计实现功能扩展,分为预装模块自定义模块

(一)自定义模块安装流程

  1. 访问Caddy 下载页,选择系统架构(如Linux AMD64)及所需插件(如dns.providers.cloudflare)。
  2. 下载后上传至服务器,执行权限配置与路径迁移:
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
}
}