Caddy
Caddy Server
上手 Caddy server 有一段时间了,一直打算写点相关使用的体验奈何太懒加之前段时间太忙了。最近刚好结了一些课,时间稍微空余了些便将以前零星的内容整理下。
本文主要涉及Caddy一些初级使用情形(server、反向代理、filemanager等),其他高级的使用场景待以后体验后再补充。
官方简单的介绍:Caddy is the HTTP/2 web server with automatic HTTPS.
Caddy是一个由Go编写的超级轻量级的web服务器。它是一个完全独立二进制文件,并且可以运行在众多平台上,包括Docker。
这些天的使用下来确实也体现了 超级轻量 的体验,配置上手非常方便。另外自带HTTPS很不错,免了手动申请证书的麻烦。下面具体介绍一使用场景。
使用Caddy搭建Google镜像
前端时间看见子川学长写了篇关于使用Caddy搭建Google反代及Wikipedia反代的文章,自己也试了下,发现配置确实方便。
那么如何在 Caddy 上配置 Google 反向代理呢?
安装Caddy
首先在Caddy官网下载并安装Caddy server。关于插件的选择,因为我们这里需要用到 http.filter 作为过滤器将HTTP文本中的链接替换为我们自己的域名,所以这个插件是必选的,另外我们接下来还要用 http.filemanager 搭建文件管理器,所以这两个都勾选上。
curl https://getcaddy.com | bash -s personal http.filemanager,http.filter
配置启动
Caddy 的配置非常简单,我就在这里贴一下我用来代理Google的配置:
- 在/etc/caddy/conf.d/新建一个example.com.conf
google.example.com { gzip proxy / https://www.google.com { header_upstream X-Real-IP {remote} header_upstream User-Agent {>User-Agent} header_upstream Accept-Language en-US #设置Google搜索默认语言 header_upstream Accept-Encoding identity #禁用upstream的Gzip } filter rule { content_type text/.* search_pattern www.google.com replacement google.example.com } filter rule { content_type text/.* search_pattern (www|ssl).gstatic.com replacement gstatic.example.com } } gstatic.example.com { #Google.com引用gstatic.com的资源也需反代 gzip proxy / https://www.gstatic.com { header_upstream X-Real-IP {remote} header_upstream User-Agent {>User-Agent} } }
- DNS配置:
- google.example.com A/AAAA {Caddy server IP}
- gstatic.example.com A/AAAA {Caddy server IP}
- 启动Caddy
/usr/local/bin/caddy -agree=true -conf=/etc/caddy/caddy.conf # 没问题就可以用systemctl启动 systemctl start caddy@service.service
使用Caddy搭建文件管理器
配置filemanager
前面安装Caddy的时候注意勾选filemanager这个插件,剩下就简单贴一下配置文件吧。
file.example.com {
filemanager / /data/share {
database /path/filemanager.db
recaptcha_key {recaptcha_key}
recaptcha_secret {recaptcha_secret}
alternative_recaptcha true #启用国内可用的g-recaptcha
locale en
}
}
启动Caddy
参考上一部分启动即可。
Caddy反代一个简单的实践
www.example.com {
gzip
proxy / https://example.com/ {
transparent
header_upstream Host {proxy_host}
header_upstream X-Real-IP {remote}
header_upstream X-Forwarded-For {remote}
header_upstream X-Forwarded-Proto {scheme}
header_downstream -Access-Control-Allow-Origin
}
代理了一个Flarum站点还有些问题没解决。