CaddyServer 手记

作为新兴 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
gzip
log ../access.log
markdown /blog {
css /blog.css
js /scripts.js
} # The open curly brace must be at the end of a line
  • 第一行描述,站点地址
  • 之后每行是 Caddy 的关键字指令, 指令后可以跟一个或者多个参数
  • 如果指令的参数配置多余一行,可使用指令块{}(括号的结尾应单独占一行),若指令块为空,括号可以省略
  • 若参数中包含空格可使用"括起来
  • 可以使用#注释

多站点示例

mysite.com {
root /www/mysite.com
}

localhost:8080, https://site.com, http://mysite.com {
root /www/sub.mysite.com
gzip
log ../access.log
}
example.com/static, *.example.com {
...
}
  • 站点配置都应在{}
  • 同一站点可以指定多个地址,并以,分隔
  • 站点地址可以指定特殊路径(路径匹配是向前最大长度匹配,如果表明这是个目录请以/结尾),和使用通配符

通过环境变量配置

localhost:{$PORT}
root {%SITE_ROOT%}

指令及指令参数请参考官方文档 https://caddyserver.com/docs

参考:

0%