首先需要确保golang版本在1.20及以上,可以用以下命令查询:
go version
若满足条件,执行以下命令编译Caddy:
go env -w GO111MODULE=on
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
~/go/bin/xcaddy build \
--with github.com/caddyserver/forwardproxy=github.com/klzgrad/forwardproxy@naive \
--with github.com/caddy-dns/alidns \
--with github.com/caddy-dns/cloudflare
若编译成果,会在当前目录下出现caddy文件,将它移动到bin目录:
mv caddy /usr/bin/
创建服务文件,caddy.service并将其移动到/etc/systemd/system下:
[Unit]
Description=Caddy2
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target
[Service]
User=root
Group=root
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
创建/etc/caddy/Caddyfile文件,根据需要修改相关内容,如tls、basic_auth等:
:443, example.com {
#tls /path/xxx.crt /path/xxx.key
tls {
dns cloudflare {
zone_token xxx
api_token xxxx
}
resolvers 1.1.1.1
}
route {
forward_proxy {
basic_auth username password
hide_ip
hide_via
probe_resistance
}
root * /var/www/html
encode gzip zstd
php_fastcgi unix//run/php/php8.3-fpm.sock
file_server
}
}
格式化Caddyfile(可选):
caddy fmt --overwrite /etc/caddy/Caddyfile
使用命令启用服务并启动caddy,查看状态:
systemctl enable caddy
systemctl start caddy
systemctl status caddy
