动手撸个Caddy(四)| 使用API管理Caddy
和Nginx不一样的是,Caddy还可以使用API来管理,通过这个能力,你可以在CI、CD的时候,对caddy做更多的事情,也更灵活。
查看配置
首先,我们启动一个caddy实例,然后通过caddy提供的/config
API查看它的配置。
|
|
启动后,caddy 的管理API会在2019端口监听,现在,我们通过访问/config
API,看下它的配置是什么。
|
|
从以上返回结果看,并没有任何配置,也就是没有任何配置的网络服务。 现在,我们通过API接口来配置一个。
配置Hello World
要实现访问localhost
就可以看到Hello World,我们需要对caddy进行配置。前面的教程中,我们是通过命令行或者Caddyfile配置的,这一次呢,我们通过load
这个API来配置caddy。
首先,我们还是要准备一个Caddyfile,它的内容如下所示:
|
|
然后,我们使用curl
这个工具,通过caddy的load
API 上传Caddyfile 配置caddy。
|
|
这里需要注意的是,执行以上命令的目录下一定要有Caddyfile,因为我使用的是@Caddyfile
,是一个相对路径,如果不是,请换成Caddyfile的绝对路径。
现在,再通过curl localhost:2019/config/
访问,就可以看到caddy的配置了。
|
|
看到了吧,这就是我们刚刚通过load
API 达到的重新配置的caddy,以上就是caddy最原始的JSON配置。
jq 是一个JSON工具,如果你的电脑没有的话,可以Google搜索下安装,这里主要用来美化下输出的JSON
/load
API就是一个可以重新设置、替换caddy的admin API,支持JSON文件和Caddyfile。
现在,在浏览器,或者通过curl 访问localhost,就可以看到Hello World了。
|
|
更新部分配置
加入,现在我想把Hello World换成你好,世界,总不能再上传一个Caddyfile覆盖吧?
哈哈,当然不会,caddy 的Admin API提供了可以修改某一部分配置的能力。在caddy中,是可以支持通过URL 路径来指定要访问哪个配置节点的。
注意看我们上面列出的JSON的配置,按JSON节点找,看看Hello World在哪里。看下是不是这个?apps/http/servers/srv0/routes/0/handle/0/routes/0/handle/0/body
,遇到JSON数组,要使用索引作为path,表示第几个元素。
现在把它和/config/
拼接起来就是http://localhost:2019/config/apps/http/servers/srv0/routes/0/handle/0/routes/0/handle/0/body这样的一个URL。
可以访问下它,看看输出什么。
|
|
成功访问,输出的正好是我们想修改的内容。
现在,通过POST的方法, 把它修改为:你好,世界。
|
|
以上命令回车后,现在你再用浏览器打开https://localhost/,就可以看到:你好,世界!了。
这种可以更新部分配置的方法非常实用,因为它风险小,可以结合编程自动化。
进一步简化配置
上面通过URL PATH遍历配置的方式很方便,可以让我们定位到配置,并且只修改需要修改的配置,但是就是URL太长了,这一小节就带你使用@id
标记来简化它。
要想简化某项配置,首先我们得先给它添加一个标记,比如给上一节中我们要处理的handle
添加一个快捷访问的标记msg
|
|
以上命令执行后,在浏览器里打开http://localhost:2019/config/apps/http/servers/srv0/routes/0/handle/0/routes/0/handle/0/,你将看到如下结果:
|
|
现在,我们就可以通过这个@id
标记快捷的访问它了,在浏览器中输入http://localhost:2019/id/msg,你会看到和上面的URL一样的输出结果。
所以,通过id标记,不管你是获取配置还是修改配置,URL都会非常简洁,也便于输入。
小节
这一篇文章主要介绍了如何通过Admin API来管理caddy,使用上也非常简单,结合编码,可以很容易的实现自动化配置。
这里我主要介绍了/load
,/config
API,以及@id
标记,还有/stop
、/reverse_proxy/upstreams
API没有介绍,但是使用方法都是大同小异的,并且符合Restful 规范,所以这里就不再介绍了,可以通过查看官方https://caddyserver.com/docs/api了解这些API的详细使用。
本文为原创文章,转载注明出处,欢迎扫码关注公众号
flysnow_org
或者网站asf http://www.flysnow.org/ ,第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「好看」,感谢支持。