这个工具只需要拿到对应架构的二进制文件就能部署,比较简单。
简单安装 下载安装 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 } }