​ 这个工具只需要拿到对应架构的二进制文件就能部署,比较简单。

简单安装

下载安装

1
2
3
4
5
6
7
8
9
10
11
# 请将链接替换为你在官网生成的链接
curl -L https://caddyserver.com/api/download?os=linux&arch=amd64 -o caddy.tar.gz

# 1. 解压文件
tar xzf caddy.tar.gz

# 2. 移动到 /usr/local/bin 目录(需要 sudo 权限)
sudo mv caddy /usr/local/bin/

# 3. 验证安装是否成功
caddy version

systemd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
vim /etc/systemd/system/caddy.service 
[Unit]
Description=Caddy Web Server
Documentation=https://caddyserver.com/docs/
After=network.target

[Service]
Type=notify
User=caddy
Group=caddy
ExecStart=/usr/local/bin/caddy run --config /etc/caddy/Caddyfile
ExecReload=/usr/local/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
PrivateTmp=true
ProtectSystem=full

[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 设置开机自启并立即启动
sudo systemctl enable --now caddy

# 查看服务状态
sudo systemctl status caddy

运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vim Caddyfile
# 监听本地 80 端口(也可以写 localhost)
:80 {

# 重要:将所有 /api/* 的请求转发到后端 Node.js 服务
handle_path /api/* {
reverse_proxy localhost:8080
}

# 其他所有请求,提供静态文件服务
root * ./frontend/dist
file_server
# 开启 gzip 压缩
encode gzip
}

开发

1
caddy run --config /path/to/your/Caddyfile

生产

1
caddy start --config Caddyfile

一般使用流程

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# 移动 Caddy 到系统路径
sudo mv caddy_linux_arm64 /usr/local/bin/caddy
sudo chmod 755 /usr/local/bin/caddy

# 创建 Caddy 用户
sudo useradd -r -d /var/lib/caddy -s /usr/sbin/nologin caddy

# 创建必要的目录
sudo mkdir -p /etc/caddy /var/lib/caddy /var/log/caddy
sudo chown -R caddy:caddy /var/lib/caddy /var/log/caddy

# 创建 systemd 服务文件
sudo tee /etc/systemd/system/caddy.service << 'EOF'
[Unit]
Description=Caddy Web Server
Documentation=https://caddyserver.com/docs/
After=network.target

[Service]
User=caddy
Group=caddy
ExecStart=/usr/local/bin/caddy run --config /etc/caddy/Caddyfile
ExecReload=/usr/local/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target
EOF

# 创建简单配置
sudo tee /etc/caddy/Caddyfile << 'EOF'
:80 {
root * /var/www/html
file_server
log {
output file /var/log/caddy/access.log
}
}
EOF

# 创建测试页面
sudo mkdir -p /var/www/html
echo "Caddy on ARM64 H313" | sudo tee /var/www/html/index.html

# 启动服务
sudo systemctl daemon-reload
sudo systemctl enable caddy
sudo systemctl start caddy

# 检查状态
sudo systemctl status caddy

最长前缀优先

一个前端入口(同一个域名/IP),所有 API 请求都需要通过 Caddy 反向代理到后端服务:

请求路径 目标后端
/api/tcp/* IP2:5002
/api/udp/* IP2:5002
/api/*(其他) IP1:5001

Caddyfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
your-domain.com {
# 1. 最具体:/api/tcp 和 /api/udp → IP2:5002
handle /api/tcp* {
reverse_proxy IP2:5002
}
handle /api/udp* {
reverse_proxy IP2:5002
}

# 2. 通用:其他 /api/* → IP1:5001
handle /api* {
reverse_proxy IP1:5001
}

# 3. 兜底:前端静态资源
handle {
root * /var/www/frontend
file_server
}
}