Caddy2反向代理(reverse_proxy)-配置案例

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
	}
  1. 企业生产环境一般不会保留控制台输出,建议只写文件。​请求量大时刷屏,控制台输出拖慢终端​,远程桌面/SSH 卡顿甚至卡死
  2. 日志文件写成绝对路径:如果是 注册成服务启动 的,工作目录很可能 不是 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