作为新兴 Web 服务器,Caddy 提供了很多简单易用的功能而没有历史的包袱,其默认支持并且能帮你自动配置 HTTP/2、HTTPS,对于 IPV6、WebSockets 都有很好的支持。基于 Go 编写的 Caddy 天生对于多核具有很好的支持,并且其丰富的插件系统提供了文件管理、文件上传、基于 MarkDown 的博客系统等等开箱即用的扩展功能。
特性:
- HTTP/2 全自动支持 HTTP/2 协议,无需任何配置。
- Auto HTTPS Caddy 使用 Let’s Encrypt 让你的站点全自动变成全站 HTTPS,无需任何配置。当然你想使用自己的证书也是可以的。
- Multi-core 因为 caddy 是 golang 写的,所以当然可以合理使用多核啦。
- IPv6 完全支持 IPv6 环境.
- WebSockets Caddy 对 WebSockets 有很好的支持.
- Markdown 自动把 md 转成 HTML ,当然,我后续要给大家介绍更强大的 hugo 来干这个事情.
- Logging Caddy 对 log 格式的定义很容易,更好的满足你日志收集的需求。
- Easy Deployment 得益于 go 的特性,caddy 只是一个小小的二进制文件,没有依赖,很好部署。
安装
官网下载地址,手动勾选系统模块证书,一键安装
运行
在网站目录下运行caddy
,启动的默认端口2015
(这时是不能使用 https 的,可以通过绑定域名启用)
命令指定运行 host 及 port
sudo caddy -host example.com -port 80 |
Caddyfile
Caddyfile
是 Caddy 的配置文件,默认会使用当前目录下的 Caddyfile 文件,也可以手动指定路径
caddy -conf ../path/to/Caddyfile |
单站点示例
localhost:8080 |
- 第一行描述,站点地址
- 之后每行是 Caddy 的关键字指令, 指令后可以跟一个或者多个参数
- 如果指令的参数配置多余一行,可使用指令块
{}
(括号的结尾应单独占一行),若指令块为空,括号可以省略- 若参数中包含空格可使用
"
括起来- 可以使用
#
注释
多站点示例
mysite.com { |
- 站点配置都应在
{}
内- 同一站点可以指定多个地址,并以
,
分隔- 站点地址可以指定特殊路径(路径匹配是向前最大长度匹配,如果表明这是个目录请以
/
结尾),和使用通配符
通过环境变量配置
localhost:{$PORT} |
指令及指令参数请参考官方文档 https://caddyserver.com/docs
参考: