Install --- Caddy
安装稳定版本
shell
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
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
默认安装配置的 Caddyfile 配置文件在 /etc/caddy/Caddyfile
中。
Getting Started
安装好之后,可以通过运行 caddy
来查看帮助命令。 通过 caddy run
后台运行,caddy start
可以前台运行。
通过api来设置
通过api的方式可以查看caddy的配置信息
shell
# 查看caddy的配置
curl localhost:2019/config/
也可以更新配置信息,比如下面的json中
json
{
"apps": {
"http": {
"servers": {
"example": {
"listen": [
":2015"
],
"routes": [
{
"handle": [
{
"handler": "static_response",
"body": "Hello, world!"
}
]
}
]
}
}
}
}
}
保存文件名为 caddy.json。 则可以运行如下命令更新配置
shell
curl localhost:2019/load \
-H "Content-Type: application/json" \
-d @caddy.json
通过caddyfile来设置
上面用 JSON 编写的相同配置可以简单地表示为:
:2015
respond "Hello, world!"
保存文件名为 Caddyfile (没有文件后缀),通过运行 caddy adapt
来将 Caddyfile 转换为 Caddy 的原生 JSON 结构。
shell
# 也可以指定配置文件路径
caddy adapt --config /path/to/Caddyfile
通过API的方式更新配置,可以实现0服务宕机时间,通过caddyfile的方式,可以 caddy reload
来重新加载。
两种方式的更多的比较可以参考 api-vs-config-files
常用应用的配置
下面以静态文件,反向代理的配置
静态文件
下面我们可以通过一个命令行,可以快速的启动给一个静态文件服务器(生产可用)。
shell
root@xxx:~# caddy file-server --listen :8080 --browse --root /var/www/mysite
其中的参数中:
--browse
表示如果没有索引文件,但想要显示文件列表--root
指定静态网站跟路径,默认是运行命令所在的当前目录
对应的 Caddyfile 配置如下
:8080
root * /var/www/mysite
file_server
更多的语法参考 file_server (Caddyfile directive)
反向代理
通过一个命令行开设置,要在计算机上启动从端口 2080 到端口 9000 的纯文本 HTTP 代理:
# 简单的端口转发
caddy reverse-proxy --from :2080 --to :9000
# 从域名到某个端口
caddy reverse-proxy --from example.com --to :9000
# 从域名到域名,并且https转发
caddy reverse-proxy --from :2080 --to https://localhost:9000
更多关于 reverse-proxy
命令 参考
caddy reverse-proxy \
--from example.com \
--to https://localhost:9000 \
--change-host-header
默认情况下,Caddy 会原封不动地传递所有 HTTP 标头,包括 Host
,并且 Caddy 从 Host 标头派生 TLS ServerName。将 --change-host-header
主机标头重置为后端标头,以便 TLS 握手可以成功完成。在上面的示例中,它将从 example.com
更改为 localhost:9000
(并将 localhost
在 TLS 握手中使用)。
简单的对应文件 Caddyfile
的内容:
:2080
reverse_proxy :9000
Caddyfile 教程
本教程将教您 HTTP Caddyfile 的基础知识,以便您可以快速轻松地生成美观、功能强大的站点配置。