背景

caddy 是一个用go语言写的,像 Apache, nginx, 或 lighttpd 的web服务器,其优点如下:

  • HTTP/2 全自动支持HTTP/2协议,无需任何配置。
  • Auto HTTPS Caddy 使用 Let’s Encrypt 让你的站点全自动变成全站HTTPS,无需任何配置。当然你想使用自己的证书也是可以的。
  • Multi-core 因为caddy是golang写的,所以当然可以合理使用多核啦。
  • IPv6 完全支持IPv6环境.
  • WebSockets Caddy 对WebSockets有很好的支持.
  • Markdown 自动把md转成 HTML ,当然,我后续要给大家介绍更强大的hugo来干这个事情.
  • Logging Caddy 对log格式的定义很容易,更好的满足你日志收集的需求。
  • Easy Deployment 得益于go的特性,caddy只是一个小小的二进制文件,没有依赖,很好部署。

安装

1
curl https://getcaddy.com | bash -s personal

第一个网站

执行 ./caddy 这时候访问localhost:2015,很简单吧

常用命令

caddy的配置文件叫Caddyfile,下面是一个简单的例子。

1
2
3
4
5
toyoo.pw {
     gzip
     tls /root/xxx.crt /root/xxx.key  #或者指定邮箱自动获取证书
     proxy / https://www.google.com.hk
}

常用的命令有:

  1. log日志

    log /var/www/log/example.log

2.目录访问

1
browse

3.gzip压缩

1
gzip

4.自主ssl证书

1
tls /path/ssl/example.com.crt /path/ssl/example.com.key

5.git拉取功能(3600秒为间隔时间)

1
2
3
git https://github.com/user/project.git /var/www/html/git/ {
  interval 3600
}

6.访问口令认证(用户emiria,密码abc123)

1
basicauth / emiria abc123

7.cors跨域(下载时记得勾上)

1
2
3
4
5
6
7
8
9
cors / {  
    origin            https://alleysakura.com
    origin            http://alleysakura.pw https://alleysakura.pw
    methods           POST,PUT
    allow_credentials false
    max_age           3600
    allowed_headers   X-Custom-Header,X-Foobar
    exposed_headers   X-Something-Special,SomethingElse
}

8.IP屏蔽(下载时记得勾上)

1
2
3
4
5
ipfilter / {  
    rule       block
    ip         212.10.15.0-255 202.10.15.0-10 59.43.247.103
    blockpage  /var/www/html/403.html
}

9.跳转功能(目录重写功能也类似)

1
redir http://example.com{url}

不像nginx进行www重定向那么麻烦,把域名原域名(不限协议)写上,大括号里加上这个就可以,简直太赞了

10.自定义错误页面

1
2
3
4
errors {
    404 404.html
    500 /var/www/html/500.html
}