Caddy是个非常不错的开源服务器产品,简单易用,自带ssl。只是没啥详细的中文文档,遇到问题只能看官方文档。
记录一下使用Caddy转发http请求的方法。
问题:将http://192.168.1.10:7077/product/*的请求转发到http://192.168.1.12:7078/*。这里其实是两个需求,一个是转发端口,还有个是去除掉product前缀。感兴趣的可以自己研究一下。
Caddyfile如下:
http://192.168.1.10:7077 {
log {
output stdout
}
handle_path /product* {
reverse_proxy http://192.168.1.12:7078
}
}
强调几点:
1. 如果开头不指定http,Caddy默认使用https协议
2. log指令开启日志,output stdout指定将日志输出到标准输出
3. /product*表示匹配所有以/product为前缀的url,包括/product和/product/*。Caddy的[matcher]匹配更偏向正则匹配,跟nginx的语法有差异
4. Caddyfile配置,同一大括号里面的多个directive(指令)并没有顺序之别,可以理解为:是给同一个匹配目标添加了多个特征
5. handle和handle_path的区别是handle_path自动在子指令中增加了一条uri strip_prefix /prefix指令,用于去除前缀