安装
官网: https://caddyserver.com
帮助文档: https://caddy2.dengxiaolong.com/docs/running
cadddy也是一个守护进程的前后台守护应用,后台服务一直监听cli的操作
所有所有的service的操作都支持
优势
目前来看 caddy的的优势是==nignx +acme.sh
- Ubuntu下安装
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo apt-key add - curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list sudo apt update sudo apt install caddy
- docker 安装
docker pull caddy
应用
托管你的网站
假设你的网站存放在 ~/mysite 目录下,在终端运行如下命令,即可在浏览器中访问你的网站。
➜ caddy file-server --root ~/mysite
## 文件服务器,改变端口
caddy file-server --root /root/caddytest404/404html --listen :8081 --browse
是不是非常简单,只需要这一行命令,你就可以托管一个网站。现在打开浏览器,输入 127.0.0.1 即可访问你的网站。 在以上命令中, file-server 是caddy的子命令,表示要启动一个文件服务的意思, --root 表示要以哪个文件目录作为文件服务的根目录,也就是我们的网站所在文件夹。
现在你还只能用IP来访问你的网站,如果想通过一个名字比如 localhost ,就需要通过 --domain 来指定。
caddy file-server --root ~/mysite --domain localhost
现在在浏览器中就可以通过 localhost 访问你的网站了,比IP要好记。
在公网上访问你的网站
在上一小节中,你的网站还只能在本机访问,如果你想让每个人都可以访问你的网站,首先你需要有一台具备公网IP的服务器,把你的网站目录文件放在这台服务器上。
现在,在这台服务器上运行如下命令,即可让所有人都可以访问你的网站,而且是HTTPS的。默认端口443
caddy file-server --root ~/mysite --domain www.flysnow.org
深入
首先 caddy start 启动 后台运行
- 编写配置文件 Caddy的核心配置只是一个JSON文档
把下面的内容保存成一个JSON文件:
{
"apps": {
"http": {
"servers": {
"example": {
"listen": [":2015"],
"routes": [
{
"handle": [{
"handler": "static_response",
"body": "Hello, world!"
}]
}
]
}
}
}
}
}
- 本地json配置文件通过curl post到本地的服务 注意-d 后面的@不是文件名必须带,这被称作api方法
我们使用另一个GET请求验证Caddy是否应用了我们的新配置:2019端口默认启动的demo端口
curl localhost:2019/config/
在浏览器中打开localhost:2015或使用curl测试它是否符合预期:
curl localhost:2015
cadddyfile配置 (推荐使用,简单配置)
最后也是转换成原生的json
制作Caddyfile
如果Caddy已经运行,停止它(Ctrl+C),然后运行:
caddy adapt
或者如果你把Caddyfile存储在其他地方,或者把它命名为Caddyfile以外的东西:
caddy adapt --config /path/to/Caddyfile
以上只是为了看到转换的json形式,没有任何实际作用,或者你需要使用api post到守护进程
你将看到JSON输出!这里发生了什么?
配置文件写法,带不带括号的区别,多个站点需要加{}
然后按回车键并输入你想要它做的事情,所以它看起来像这样:
localhost
respond "Hello, world!"
保存并从Caddyfile所在的同一文件夹中运行Caddy: 推荐使用caddy start
caddy start
你可以通过将它们包裹在花括号{ }中来在Caddyfile中定义多个站点。将Caddyfile 更改为:
localhost {
respond "Hello, world!"
}
localhost:2016 {
respond "Goodbye, world!"
}
你可以通过两种方式为Caddy提供更新的配置:直接使用API:
curl localhost:2019/load \
-X POST \
-H "Content-Type: text/caddyfile" \
--data-binary @Caddyfile
或使用reload命令,它会为你执行相同的API请求:
caddy reload
测试第一个实例: