caddy 是使用 go 语言开发的一个 server 服务器
相对于 nginx 来说,这个部署更简单,配置起来也很简单,很适合搭私人站点使用,而且相比于 nginx 来说,这个只有单文件,很适合小白使用
而且,这东西最大的优点是,可以通过简单的配置来支持 https,而无需操心证书,另外还支持 http2 协议
这里有一份中文文档,请注意查收
以 mac os 为例 我只需要 brew install caddy
然后, 运行 caddy
,这样就完成了最简单的部署过程…
当然这是因为有默认配置的关系,整个项目是单文件的,就只有一个 caddy 文件
其他系统的参考官网
运行结果如下
默认是 2015 端口,可能是代表这个项目是 2015 年创建/发布的?
然后打开 http://localhost:2015/ 就可以看到你的网页了,当然这里因为有默认的原因,你看到的也许是 404,或是其他的什么
caddy 支持命令行的一些简单配置和配置文件的复杂配置
这里说命令行运行简单命令的意思并不是支持不全,而是有一些复杂的情况,如果用命令行来做调错比较麻烦
比如 -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 文件作为配置
localhost:80 {
root /Users/caijinglong/www
gzip
log /Users/caijinglong/www/log/caddy.log
}
这里是一个简单配置方案 80 端口
这里就是开启 html 的文件目录,gzip ,指定日志文件,
这里需要将目录替换成你自己的目录
我的目录结构是这样的 只要我在这个目录下运行,就可以看到这样的 效果
我们的服务器就启动起来了
然后进行一些其他的配置
这里可以参考一下 http 协议的配置
支持如下的格式,包括协议 host ,通配符,端口,path
以当前的网站为例,我在阿里 dns 上配置了域名解析,然后我只需要如下配置即可完成 kikt.top
www.kikt.top
的配置,且自动完成了 https 协议
首先是 Caddyfile
kikt.top {
gzip
tls [email protected]
}
www.kikt.top {
gzip
tls [email protected]
}
这里我没有指定目录是因为 Caddy 的 docker 镜像中我配置了映射的原因
docker-componse.yaml
version: "3"
services:
blog-web-caddy:
image: abiosoft/caddy
ports:
- "80:80"
- "443:443"
volumes:
- $HOME/docker/caddy/.caddy:/root/.caddy
- $HOME/docker/caddy/Caddyfile:/etc/Caddyfile
- $HOME/html/www:/srv
environment:
- TZ=Asia/Shanghai
这里我使用的镜像是abiosoft/caddy
这里有详细介绍,我只是使用了几个简单的配置
去那边关掉 nginx 后
接着执行docker-compose up -d
,这样就完成了全部的部署,这样我的 blog html 服务器就从 nginx 切换到了 caddy ?
我的服务器中在 3000 端口有一个 gogs 的 git 服务器
我修改 Caddyfile
kikt.top {
gzip
tls [email protected]
}
www.kikt.top {
gzip
tls [email protected]
}
git.kikt.top {
gzip
proxy / kikt.top:3000
}
增加一个二级域名,把 git.kikt.top 代理到同域名的 3000 端口上
caddy 总体来说还是入门比较容易的,配置也相对简单,但是目前可能还没有 nginx 的周边那么丰富,而且市场占有率现在也无法相比
如果是自己搭网站,可以用 caddy,简单易用,也不用考虑那么多东西,直接零配置支持 https
如果是为了今后的职业规划 nginx 还是必须要学习的