Caddy 简介Caddy 是一个 Go 编写的 Web 服务器,类似于 Nginx,Caddy 提供了更加强大的功能,随着 v2 版本发布 Caddy 已经可以作为中小型站点 Web 服务器的另一个选择;相较于 Nginx 来说使用 Caddy 的优势如下:
- 自动的 HTTPS 证书申请(ACME HTTP/DNS 挑战)
- 自动证书续期以及 OCSP stapling 等
- 更高的安全性包括但不限于 TLS 配置以及内存安全等
- 友好且强大的配置文件支持
- 支持 API 动态调整配置(有木有人可以搞个 Dashboard)
- 支持 HTTP3(QUIC)
- 支持动态后端,例如连接 Consul、作为 k8s ingress 等
- 后端多种负载策略以及健康检测等
- 本身 Go 编写,高度模块化的系统方便扩展(CoreDNS 基于 Caddy1 开发)
- ……
编译 Caddy2注意: 在 Caddy1 时代,Caddy 官方发布的预编译二进制文件是不允许进行商业使用的,Caddy2 以后已经全部切换到 Apache 2.0 License 。
在默认情况下 Caddy2 官方提供了预编译的二进制文件,以及自定义 build 下载页面,不过对于需要集成一些第三方插件时,我们仍需采用官方提供的 xcaddy 来进行自行编译;以下为具体的编译过程:
Golang 环境安装本部分编译环境默认为 Ubuntu 20.04 系统,同时使用 root 用户,其他环境请自行调整相关目录以及配置;编译时自行处理好科学上网相关配置,也可以直接用国外 VPS 服务器编译 。
首先下载 go 语言的 SDK 压缩包,其他平台可以从 https://golang.org/dl/ 下载对应的压缩包:
wget https://golang.org/dl/go1.15.6.linux-amd64.tar.gz
下载完成后解压并配置相关变量:# 解压tar -zxvf go1.15.6.linux-amd64.tar.gz# 移动到任意目录mkdir -p /opt/devtoolsmv go /opt/devtools/go# 创建 go 相关目录mkdir -p ${HOME}/gopath/{src,bin,pkg}# 调整变量配置,将以下变量加入到 shell 初始化配置中# bash 用户请编辑 ~/.bashrc# zsh 用户请编辑 ~/.zshrcexport GOROOT='/opt/devtools/go'export GOPATH="${HOME}/gopath"export GOPROXY='https://goproxy.cn' # 如果已经解决了科学上网问题,GOPROXY 变量可以删除,否则可能会起反作用export PATH="${GOROOT}/bin:${GOPATH}/bin:${PATH}"# 让配置生效# bash 用户替换成 ~/.basrc# 重新退出登录也可以source ~/.zshrc
配置完成后,应该在命令行执行 go version 并有以下成功返回:bleem ? ~ go versiongo version go1.15.6 linux/amd64
安装 xcaddy按照官方文档直接命令行执行 go get -u github.com/caddyserver/xcaddy/cmd/xcaddy 安装即可:bleem ? ~ go get -u github.com/caddyserver/xcaddy/cmd/xcaddygo: downloading github.com/caddyserver/xcaddy v0.1.7go: found github.com/caddyserver/xcaddy/cmd/xcaddy in github.com/caddyserver/xcaddy v0.1.7go: downloading github.com/Masterminds/semver/v3 v3.1.0go: github.com/Masterminds/semver/v3 upgrade => v3.1.1go: downloading github.com/Masterminds/semver/v3 v3.1.1.....
安装完成后应当在命令行可以直接执行 xcaddy 命令:# xcaddy 并没有提供完善的命令行支持,所以 `--help` 报错很正常bleem ? ~ xcaddy --helpgo: cannot match "all": working directory is not part of a module2021/01/07 12:15:56 [ERROR] exec [go list -m -f={{if .Replace}}{{.Path}} => {{.Replace}}{{end}} all]: exit status 1:
编译 Caddy2编译之前系统需要安装 jq、curl、git 命令,没有的请使用apt install -y curl git jq
命令安装;自行编译的目的是增加第三方插件方便使用,其中官方列出的插件可以从 Download 页面获取到:
文章插图
其他插件可以从 GitHub 上寻找或者自行编写,整理好这些插件列表以后只需要使用 xcaddy 编译即可:
# 获取最新版本号,其实直接去 GitHub realse 页复制一下就行# 这里转化为脚本是为了方便自动化export version=$(curl -s "https://api.github.com/repos/caddyserver/caddy/releases/latest" | jq -r .tag_name)# 使用 xcaddy 编译xcaddy build ${version} --output ./caddy_${version} --with github.com/abIOSoft/caddy-exec --with github.com/caddy-dns/cloudflare --with github.com/caddy-dns/dnspod --with github.com/caddy-dns/duckdns --with github.com/caddy-dns/gandi --with github.com/caddy-dns/route53 --with github.com/greenpau/caddy-auth-jwt --with github.com/greenpau/caddy-auth-portal --with github.com/greenpau/caddy-trace --with github.com/hairyhenderson/caddy-teapot-module --with github.com/kirsch33/realip --with github.com/porech/caddy-maxmind-geolocation --with github.com/caddyserver/format-encoder --with github.com/mholt/caddy-webdav
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 比伽马射线暴威力更大的宇宙现象 太阳系中最热的星球
- 狐狸精的含义 狐狸精比喻什么样的人
- 两种菊花茶的比较,冬季喝菊花茶的好处
- 老人腿抽筋吃什么药比较好呢
- 34码的裤子是几个xl男?34码的裤子是几个xl运动裤_1
- 一加7pro和一加8pro对比-一加7pro和苹果8p-
- 梦境是不是另一个平行世界 做梦是不是平行时空的记忆
- 翡翠|翡翠做的头饰和翡翠做的簪子,这两个做一个对比,哪一个更得你心
- 西装|女子花49000元买了朔身衣,穿一个月毫无减肥效果
- 奥运会射箭比赛射程为多少?