目录
caddy
Go 编写的开源的web服务器,可以自动配置HTTPS和续期。简单的配置和强大的功能,让人爱不释手。如反向代理,负载均衡,URL重写、静态文件分发等等功能。目前有2个大版本,caddy 和 caddy2。这是我不太喜欢的点,2个版本的更新差异比较大,很多配置都要重新看文档。中文网上的配置许多都是v1 版本,而常用的包管理工具都已经更新到2版本,配置的时候才发现白看来。就是这么尴尬。这里用的版本是v2,并且在docker内运行。
反向代理
- 配置很简单
配置
vim /etc/caddy/Caddyfile
site1.com
{
reverse_proxy {
to site2.com
}
}
- docker 运行
sudo docker run -itd --name caddy --restart=always \
-p 80:80 \
-p 443:443 \
-v /etc/caddy/Caddyfile:/etc/caddy/Caddyfile \
caddy
CDN
我们不是网络大提供商,最多也就数个机器,这个时候我们可以拿一个主机做主站,其他地域的机器做反向代理,在通过控制缓存,实现CDN功能,当然最好在配合个DNS地域解析。
缓存插件
源码:sillygod/cdp-cache
docker运行
- 官方示例:
docker run -it -p80:80 -p443:443 -v [the path of caddyfile]:/app/Caddyfile docker.pkg.github.com/sillygod/cdp-cache/caddy:latest
然而这是不行的,这个链接并不存在。
2. 成功的运行
docker run -it -p80:80 -p443:443 -v [the path of caddyfile]:/app/Caddyfile ghcr.io/sillygod/cdp-cache/caddy:latest
该链接在这里找到的Packages cdp-cache/caddy
配置
file模式
{
order http_cache before reverse_proxy
}
cdn.site1.com {
reverse_proxy {
to orgin.site1.com
}
http_cache {
cache_type file
path /tmp/cache
match_path /
match_header Content-Type image/jpg image/png "text/plain; charset=utf-8"
}
}
官方示例配置文件
example
可以看到还支持很多种模式,有时间再试试。
总结
如果直接做反向代理,对于静态文件或者长时间不修改的文件来说,每次请求都要从源服务器要数据。增加缓存之后,可以提高响应速度,也就是CDN的效果。
有时间来试试
- 插件还有几种缓存模式,
- 配置文件还有许多配置项没用到,可以配置的更符合需求。