Caddy

Caddy 首先是一个用Go实现的Web Server。
Caddy的作者Matt Holt有这样的理念: 其他Web Server为Web而设计,Caddy为human设计。一句话就是 Caddy主打易用性,使用配置简单。

Caddy有下面这些开箱即用的特性:

  • 全自动支持HTTP/2协议,无需任何配置。
  • Caddy 使用 Let’s Encrypt 让你的站点全自动变成HTTPS,无需任何配置。
  • 合理使用多核多核 得益于go的特性
  • 完全支持IPv6环境
  • Caddy 对WebSockets有很好的支持
  • 自动把Markdown转成 HTML
  • Caddy 对log格式的定义很容易
  • 易于部署 得益于go的特性,caddy只是一个小小的二进制文件,没有依赖,很好部署
  • 得益于Go的跨平台特性,Caddy很容易的支持了三大主流系统:Windows、 Linux、Mac

安装 Caddy

自动安装

yum install -y yum-plugin-copr
yum copr enable @caddy/caddy
yum install -y caddy
查看安装目录
whereis caddy
#caddy: /usr/bin/caddy /etc/caddy /usr/share/caddy
  • /usr/bin/caddy 为可执行文件
  • /etc/caddy 为配置文件目录
  • /usr/share/caddy 为静态文件目录
启动Caddy服务
systemctl enable caddy
systemctl start caddy

# 查看运行状态是否为active (running)
systemctl status caddy

访问80端口出现
屏幕截图 2022-07-05 221712

手动安装

  • https://caddyserver.com/download 进入到 caddy 官网的下载界面,选择平台和插件
  • 然后使用下方 Direct link to download 内的链接即可
  • 解压之后用 cp 命令放到 /usr/local/bin/caddy 就完成了安装

到/usr/local/bin/目录下执行caddy start

配置 Caddy

进入 /etc/caddy
vim Caddyfile

普通站点访问

example.com:80 {
  gzip
  log /var/log/caddy/access.log
  root /var/www
  tls /etc/ssl/cert.pem /etc/ssl/key.pem
}
example2.com:3000{
  gzip
  log /var/log/caddy/example2/access.log
  root /var/www/example2
  tls /etc/ssl/example2/cert.pem /etc/ssl/example2/key.pem
}

反向代理

http://www.example.com {
  ## HTTP 代理配置
  ### 此时访问 example.com,实际访问的是 127.0.0.1:8080/app/ 的内容
  proxy / 127.0.0.1:8080/app/

  ## WebSocket 代理配置
  ### 客户端请求的 wss://example.com/app/websocket, 实际为 wss://127.0.0.1:8080/app/websocket
  proxy /app/websocket 127.0.0.1:8080 {
    websocket
  }
}

负载均衡

proxy / web1.local:80 web2.local:90 web3.local:100 { 
  policy round_robin 
}

Caddy常用命令

caddy start  #开启Caddy Web Server
caddy stop  #停止Caddy Web Server
caddy reload  #重载Caddy Web Server
caddy restart  #重启Caddy Web Server
caddy status  #查看Caddy Web Server状态
caddy install  #安装Caddy Web Server
caddy edit  #编辑配置文件Caddyfile
caddy service  #使Caddy Web Server成为一项服务(upstart/systemd)
caddy update  #升级Caddy Web Server
caddy delete  #卸载Caddy and data
caddy about  #关于Caddy Web Server
caddy version  #检测脚本/Caddy/PHP5-fpm版本信息