关于caddy的优点网上一搜一大把,这里就不说了,咱们主要说一下怎么使用。
也可以看看这位大佬的文章,受益颇丰
安装:
- 由于go语言特性,直接下载二进制文件就可以用。下载地址~
测试&运行:
- 命令运行caddy
.\caddy.exe run
- 浏览器请求
http://localhost:2019/config/
- 如果返回一大串
json
类型的数据,就说明已经成功了
- 但是这样提供不了任何有用的服务
- 需要在caddy同目录下创建一个caddy的配置文件
Caddyfile
,注意没有任何后缀 - 在
Caddyfile
里添加一个配置:9033 { respond "Hello, caddy!" }
- 先关闭命令窗口,结束服务
- 使用
.\caddy run -config Caddyfile
命令重新运行caddy - 然后访问
http://127.0.0.1:9033/
页面上会显示 Hello, caddy!
常用命令:
-
run命令:
.\caddy run --config Caddyfile
- 需要
Caddfile
配置文件在caddy同一目录下,否则需指定Caddyfile
路径 - eg:
caddy run --config ./path/Caddyfile
run
会运行一个前台caddy进程,直到你使用ctrl+c
或者关闭终端才退出
- 需要
-
start命令:
.\caddy run --config Caddyfile
start
命令的使用run
一样,不同的是start
会启动一个在后台运行的caddy
-
stop命令:
caddy stop
- 使用
start
命令启动caddy的情况下,可以使用stop
命令退出caddy
- 使用
-
检查配置文件格式是否正确
caddy validate --config Caddyfile
- 成功返回
Valid configuration
- 类似nginx中的
nginx -t
命令
- 成功返回
-
reload命令:
.\caddy reload --config Caddyfile
- 重载配置,修改Caddyfile文件之后使用该命令使caddy热重载
配置文件Caddyfile:
- 在caddy同级目录下,新建名称为
Caddyfile
的文件,无后缀且文件名称必须是Caddyfile
- caddy所有的配置都写在Caddyfile文件中
- 注释使用
#
号
-
配置一个简单的web服务
# 这是一个简单的服务 :80 { respond "Hello, Caddy!" }
-
反向代理:
example.com { reverse_proxy localhost:8888 }
-
代理匹配的请求:
reverse_proxy /api/* { to 127.0.0.1:9000 }
-
静态文件服务:
example.com { root * /var/www/myweb file_server }
-
一个比较完整的配置示例
{ # 全局配置块 # 配置 Caddy 的管理接口(可以使用caddy的API修改配置) admin 127.0.0.1:2019 # 日志打印 log { output file ./log/caddy.log format json level info } } # 域名 example.com { # API请求 handle_path /demo/* { reverse_proxy 127.0.0.1:8080 { header_up Host {host} header_up X-Real-IP {remote} header_up X-Forwarded-For {remote} } } # API请求 handle_path /docker/* { reverse_proxy 127.0.0.1:8081 { header_up Host {host} header_up X-Real-IP {remote} header_up X-Forwarded-For {remote} } } # 静态文件位置 root * /var/www/html file_server }
其他内容:
备注信息:
- 默认只要设置了有效的域名(比如
baidu.com
)caddy会自动为你申请tls证书的 - 证书位置是不变的,更新证书后会重置旧的
ps:后续还会写caddyAPI的使用
ps:后续还会写caddy-coraza的WAF