Caddy瞎用用指南

2019-06-05 17:22 +0800


Caddy是什么

Caddy是一个网页服务器,和NGINX、Apache2一起组成服务器御三家(lighttpd惨遭除名)

为什么选择Caddy

Caddy用Golang编写,支持自动HTTPS证书申请、HTTP/2协议、webhook自动部署,资源需求低,跑得也很快,安装配置也很方便!

相比之下,Apache2配置要写一坨东西,还经常因为配置文件太过混乱导致各种找不出的弱智bug(曾经因为没有启用ws模块无法反代ws请求的痛);Apache+HTTPS必须自己申请证书或者用certbot然后指定证书路径,烦的一比,很多发行版还不支持TLSv1.3。

如何安装

  1. 访问https://caddyserver.com/download
  2. 选择对应平台和所需要的插件,同意使用协议
  3. 点击生成,服务器会编译一个安装包
  4. 下载并安装生成的安装包

或者可以直接运行Caddy网站生成的脚本,如

curl https://getcaddy.com | bash -s personal http.cache, http.git

如何使用

  1. 在运行文件夹摆一个Caddyfile
  2. 直接运行caddy,或者建立/etc/systemd/system/caddy.service然后作为系统服务使用。

Caddyfile

https://your-site.com {
  gzip
  browse
  root /path/to/root
  tls admin@your-size.com

  proxy /proxy http://localhost:8888

  git {
    repo git@git.your-site.com
    key /path/to/key/id_rsa
    branch master
    path /path/to/local/repo
    then do something...
    then do another thing...
    hook /webhook PASSKEY
    hook_type github
  }

  fastcgi / php-fpm:9000 php {
    index index.php
  }
  rewrite {
    to {path} {path}/ /index.php?{query}
  }

  log /path/to/log_file
  errors /path/to/log_file
}

必备选项:

  • https://your-site.com制定地址和端口(可省略)
  • root文档根目录
  • tls开启HTTPS,根据邮箱自动申请/更新证书,也可使用DNS-challange;tls off则关闭加密(不可在443关闭)

常用功能/插件:

  • gzip开启数据压缩
  • browse允许浏览文件目录
  • proxy反向代理
  • git自动部署
    • repobranch远程仓库地址和指定的分支
    • keySSH秘钥地址
    • path本地仓库地址
    • then按顺序执行代码
    • hookhook_type钩子的地址、秘钥和类型
  • fastcgi代理对FastCGI服务器的请求
  • rewrite重写请求地址