使用caddy run或caddy start启动caddy,不要带任何配置文件。现在caddy已经在“空转”了,我们使用Heredoc[4]的方式,通过API接口给它加载一些配置:
curl localhost:2019/load \ -X POST \ -H "Content-Type: application/json" \ -d @- << EOF { "apps": { "http": { "servers": { "hello": { "listen": [":2015"], "routes": [ { "handle": [{ "handler": "static_response", "body": "Hello, world!" }] } ] } } } } } EOF
把这个配置加载到caddy以后,我们在客户端使用浏览器访问caddy服务器的2015端口,http://192.168.31.2:2015
,或者也可以使用命令:curl http://192.168.31.2:2015。我们会看到“Hello, world!”
用Heredoc字符流的方式加载配置还是有点费劲的,前面的例子只是让我们知道caddy的这种工作方式。更常用的方式还是把配置写在一个文件中,然后再加载。
接下来我们把前面的配置内容写入到一个简单的JSON配置文件中,然后同样使用curl命令完成加载。文件名称为caddy.json
,其内容如下:
1 { 2 "apps": { 3 "http": { 4 "servers": { 5 "hello": { 6 "listen": [":2015"], 7 "routes": [ 8 { 9 "handle": [{ 10 "handler": "static_response", 11 "body": "Hello, world!" 12 }] 13 } 14 ] 15 } 16 } 17 } 18 } 19 }
现在使用如下的命令加载这个配置文件:
curl localhost:2019/load \ -X POST \ -H "Content-Type: application/json" \ -d @caddy.json
同样,我们可以在客户端通过浏览器或curl来访问一下2015端口:
curl http//192.168.31.2:2015
如果能看到Hello,world!那就代表刚才的配置文件已经生效了。
提示 | |
---|---|
实际上caddyAPI在大多数情况下,是为其他程序所设计的一种接口。 |
接下来我们更新一下caddy.json
文件,定义两个站点,一个在2015端口,一个在2016端口:
1 { 2 "apps": { 3 "http": { 4 "servers": { 5 "hello": { 6 "listen": [":2015"], 7 "routes": [ 8 { 9 "handle": [{ 10 "handler": "static_response", 11 "body": "Hello, world!" 12 }] 13 } 14 ] 15 }, 16 "bye": { 17 "listen": [":2016"], 18 "routes": [ 19 { 20 "handle": [{ 21 "handler": "static_response", 22 "body": "Goodbye, world!" 23 }] 24 } 25 ] 26 } 27 } 28 } 29 } 30 }
然后再次使用如下的命令来加载这个文件:
curl localhost:2019/load \ -X POST \ -H "Content-Type: application/json" \ -d @caddy.json
然后在客户端分别访问:http://192.168.31.2:2015
和http://192.168.31.2:2016
,会看到“Hello, world!”及“Goodbye, world!”。
提示 | |
---|---|
caddy.json 这个文件也可以通过命令行来使用:caddy start --config caddy.json |
使用API可以做很多的事情,包括导出配置和对配置进行细粒度的更改(而不是更新整个内容)。建议阅读更完整的API教程:https://caddyserver.com/docs/api-tutorial及https://caddyserver.com/docs/api
[4] Heredoc:向交互式命令传递多行文本或代码的一种方式,第一行是以可选命令开始,紧接着是重定向符号 <<, 你可以使用任何字符串作为分隔符,我们最常用的是 EOF(End Of File) 或者 END