Caddy 初探

发布于 2020-03-20  435 次阅读


caddy 是使用 go 语言开发的一个 server 服务器

相对于 nginx 来说, 这个部署更简单, 配置起来也很简单, 很适合搭私人站点使用, 而且相比于 nginx 来说, 这个只有单文件, 很适合小白使用

而且, 这东西最大的优点是, 可以通过简单的配置来支持 https, 而无需操心证书, 另外还支持 http2 协议

这里有一份中文文档, 请注意查收

入手

以 mac os 为例 我只需要 brew install caddy 然后, 运行 caddy, 这样就完成了最简单的部署过程…

当然这是因为有默认配置的关系, 整个项目是单文件的, 就只有一个 caddy 文件

其他系统的参考官网

运行结果如下 默认是 2015 端口, 可能是代表这个项目是 2015 年创建 / 发布的?

然后打开 http://localhost:2015/ 就可以看到你的网页了, 当然这里因为有默认的原因, 你看到的也许是 404, 或是其他的什么

自定义配置

caddy 支持命令行的一些简单配置和配置文件的复杂配置

命令行

使用caddy -h 可以看到最新最全的命令行参数列表

这里说命令行运行简单命令的意思并不是支持不全, 而是有一些复杂的情况, 如果用命令行来做调错比较麻烦

比如 -agree 同意 CA 的协议

-ca XXX 获取指定 host 的 ca 证书

一般情况下比较有用的就是

-conf string 使用配置文件

-email string ca 的 email

-host string 域名

-http-port string http 协议的端口号 默认 80

-https-port string https 协议的端口号 默认是 443

-port string 端口号

-log string 日志文件的目录

-http2 支持 http2 协议

这部分具体的可以参考 官网 cli 部分

CA 相关的  就是 https 要用到的东西

在使用域名的方式之前 你需要确定好你的域名解析是指向当前这台计算机的

配置文件

这个使用起来很简单 就是 caddy -conf XXX 这里的 XXX 是配置文件的目录

然后 caddy 会去读取配置文件 这部分可以参考官网 caddyfile 部分, 这个是 caddyfile 文件的基本语法

还有一种方式就是简单的使用caddy 这里 caddy 会在当前的运行路径下根据默认约定去寻找 Caddyfile 文件作为配置

这里是一个简单配置方案 80 端口

这里就是开启 html 的文件目录, gzip , 指定日志文件,

这里需要将目录替换成你自己的目录

我的目录结构是这样的 只要我在这个目录下运行, 就可以看到这样的  效果

我们的服务器就启动起来了

然后进行一些其他的配置

这里可以参考一下 http 协议的配置

我们在配置文件上有标题的概念 这个标题就是反向代理的地址

支持如下的格式, 包括协议 host , 通配符, 端口, path

docker 的方式配置

以当前的网站为例, 我在阿里 dns 上配置了域名解析, 然后我只需要如下配置即可完成 kikt.top www.kikt.top的配置, 且自动完成了 https 协议

首先是 Caddyfile

这里我没有指定目录是因为 Caddy 的 docker 镜像中我配置了映射的原因

docker-componse.yaml

这里我使用的镜像是 abiosoft/caddy

这里有详细介绍, 我只是使用了几个简单的配置

  1. 指定了端口号, 将 80 443 端口映射出来
  2. 指定了文件映射, 证书文件, Caddyfile,html 文件

去那边关掉 nginx 后

接着执行docker-compose up -d, 这样就完成了全部的部署, 这样我的 blog html 服务器就从 nginx 切换到了 caddy 😁

一些其他的配置

我的服务器中在 3000 端口有一个 gogs 的 git 服务器

我修改 Caddyfile

增加一个二级域名, 把 git.kikt.top 代理到同域名的 3000 端口上

后记

caddy 总体来说还是入门比较容易的, 配置也相对简单, 但是目前可能还没有 nginx 的周边那么丰富, 而且市场占有率现在也无法相比

如果是自己搭网站, 可以用 caddy, 简单易用, 也不用考虑那么多东西, 直接零配置支持 https

如果是为了今后的职业规划 nginx 还是必须要学习的。


或许明日太阳西下倦鸟已归时