1. 创建默认文件
在 caddy 命令所在目录,创建文件:Caddyfile(默认文件必须是这个名),内容如下:
{
log {
output file C:/caddy_2.11.4_windows_amd64/logs/caddy.error.log {
roll_size 20mb
roll_keep 5
}
level INFO
}
email 123456@qq.com
acme_ca https://acme-v02.api.letsencrypt.org/directory
}
# 下面域名必须事先配置好
www.xxx.com {
# 打开下面注释,注释掉下面邮箱,就不会申请证书
# tls internal
# 申请证书失败、或过期,会发送到这个邮箱
tls 123456@qq.com
# 配置日志
log {
output file .\logs\www.xxx.com.access.log {
roll_size 100mb
roll_keep 10
roll_local_time
}
format console {
time_local
time_format wall_milli
}
}
# 接收外网请求,转发到 127.0.0.1:3000
reverse_proxy 127.0.0.1:3000 {
transport http {
# 45秒没收到请求,自动断开与后端服务器的链接
keepalive 45s
# 与后端的链接,最多保留16条空闲的链接
keepalive_idle_conns_per_host 16
# 5 秒连不上后端,直接返回 502给浏览器
dial_timeout 5s
}
}
}
解释:acme_ca
acme_ca https://acme-v02.api.letsencrypt.org/directory
指定使用 Let's Encrypt 签证书,只要邮箱就能注册账户,门槛更低
解释:全局log配置
log {
output file C:/caddy_2.11.4_windows_amd64/logs/caddy.error.log {
roll_size 20mb
roll_keep 5
}
level INFO
}
- 企业生产环境一般不会保留控制台输出,建议只写文件。请求量大时刷屏,控制台输出拖慢终端,远程桌面/SSH 卡顿甚至卡死
- 日志文件写成绝对路径:如果是 注册成服务启动 的,工作目录很可能 不是
C:\caddy_2.11.4_windows_amd64,结果日志就跑到别的地方去了,你还以为没生成。
解释:邮箱配置
全局 email 123456@qq.com 是给整个 Caddy 实例设置一个默认 ACME 账户邮箱;站点块里的 tls 123456@qq.com 是给这个站点单独指定邮箱
两者都写,站点自己的 tls 邮箱优先 全局兜底,站点覆盖
2. 校验默认配置文件
**提示:**上面写的是正确的,这步其实没用,只是模拟正常配置流程
**注意:**默认配置文件名必须是 Caddyfile
caddy validate
没有问题就继续下一步
3. 格式化配置文件
**提示:**格式化配置文件的缩进、空格等,也就是说,不执行这步,也可行
1. 预览格式化效果
不会修改文件,输出到控制台
caddy fmt Caddyfile
2. 直接格式化默认文件
**注意:**默认配置文件名必须是 Caddyfile
caddy fmt --overwrite
4. 重新加载默认配置文件
可以不重启 caddy 服务器,重新加载配置文件
caddy reload