Caddy是一个用Go语言编写的可扩展服务器平台,主要管理配置并通过静态编译时插入的模块提供功能。
安装下载
直接使用预编译好的二进制包,官方提供了主流版本的二进制包。
# Github查看:
https://github.com/caddyserver/caddy/releases
解压后,把 caddy 加入到 PATH 变量中,使用 caddy
查看帮助。
caddy -v
v2.8.2 h1:81rawJP54kba4pEdl7Pg=
如下:
使用介绍
1.直接启动
在一个窗口执行:
caddy run
在另一个窗口执行:
curl localhost:2019/config/
null
默认情况下,Caddy的配置(“config”)是空的。
2. Hello World
上面是一个空的启动,跟任何编程语言或软件一样,我们得先打个招呼。
把下面的内容保存成一个JSON文件(vim hi.json
):
{
"apps": {
"http": {
"servers": {
"example": {
"listen": [":2024"],
"routes": [
{
"handle": [{
"handler": "static_response",
"body": "你好啊, 大千世界!"
}]
}
]
}
}
}
}
}
加载这个配置:
curl localhost:2019/load \
-X POST \
-H "Content-Type: application/json" \
-d @hi.json
## 查看配置
curl localhost:2019/config/
### 返回
{"apps":{"http":{"servers":{"example":{"listen":[":2024"],"routes":[{"handle":[{"body":"你好啊, 大千世界!","handler":"static_response"}]}]}}}}}
## 访问2024
curl localhost:2024
### 返回
你好啊, 大千世界!
3. 使用Caddyfile
Caddyfile是一个内置的配置适配器,以其直观的语法而流行,允许用户以友好的方式手动编写Caddy的配置。
Caddyfile 内容:
:2015
respond "Hello, world!"
停止刚才 run 的进程,然后执行(这里与官方文档有些不一致):
caddy adapt
## 返回json,这应该是方便继续使用上一步的方式启动
2024/12/26 01:07:45.925 INFO using adjacent Caddyfile
{"apps":{"http":{"servers":{"srv0":{"listen":[":2015"],"routes":[{"handle":[{"body":"Hello, world!","handler":"static_response"}]}]}}}}}
# 继续启动
caddy run --config Caddyfile --adapter caddyfile
在另一个窗口运行:
# curl localhost:2015
Hello, world!
错误的尝试
尽管在当前目录下存在一个 Caddyfile,但是
# caddy run
2024/12/26 01:10:20.456 INFO using adjacent Caddyfile
Error: ambiguous config file format; please specify adapter (use --adapter)
# caddy run --adapter caddyfile
Error: cannot adapt config without config file (use --config)
# caddy run --config Caddyfile
2024/12/26 01:13:17.745 INFO using config from file {"file": "Caddyfile"}
Error: ambiguous config file format; please specify adapter (use --adapter)