目录Caddy 既出, 何需 Nginx?
1. Caddy 是啥
Caddy 是用来替代 Nginx 的新一代反代工具, 配置简单很多.
有了 Caddy, 就不要再装 Nginx 了, 不然会冲突.
官方文档地址: https://caddyserver.com/docs/
中文文档地址: https://dengxiaolong.com/caddy/zh/caddyfile.html
Caddy 介绍 (中文): 使用 Caddy 替代 Nginx,全站升级 https,配置更加简单
2. Caddy 配置简介
# 如果你希望使用其他端口或使用域名,修改此处 :80 的值后在 ~/.hydro 目录下使用 caddy reload 重载配置。
# 如果你在当前配置下能够通过 http://你的域名/ 正常访问到网站,若需开启 ssl,
# 仅需将 :80 改为你的域名(如 hydro.ac)后使用 caddy reload 重载配置即可自动签发 ssl 证书。
# 清注意在防火墙/安全组中放行端口,且部分运营商会拦截未经备案的域名。
# For more information, refer to caddy v2 documentation.
# :80 { # 这是 http 的访问端口, 注释掉之后就不能通过 http 的域名访问
a.com, www.a.com, b.com { # 写了域名就会给域名自动签发 SSL 证书, 也就是开启 https 访问, 注意防火墙开启 443 端口. 多个网站之间用`, `来隔开, 注意逗号后边有空格.
log { # log 文件默认上限 1gb, 可能会比较大, 但是会自动压缩, 需要改小自己调
output file /data/access.log {
roll_size 1gb
roll_keep_for 72h
}
format json
}
# Handle static files directly, for better performance.
root * /root/.hydro/static # 静态文件目录
@static {
file {
try_files {path}
}
}
handle @static { # 处理静态文件的方式
file_server {
precompressed br gzip # 这里可以开启高压缩比算法, 节约流量, 使用方法见下方
}
}
handle { # 这里是动态代理地址, 如果有其他服务, 可以下边再开一个地址写不同的端口
reverse_proxy http://127.0.0.1:8888
}
}
c.com {
# 中间这些可以照着上边写, 也可以自己改
handle { # 代理到一个不同的服务商
reverse_proxy http://127.0.0.1:9999
}
}
# 如果你需要同时配置其他站点,可参考下方设置:
# 请注意:如果多个站点需要共享同一个端口(如 80/443),请确保为每个站点都填写了域名!
# 动态站点:
# xxx.com {
# reverse_proxy http://127.0.0.1:1234
# }
# 静态站点:
# xxx.com {
# root * /www/xxx.com
# file_server
# }
3. 使用 gzip / br 节省带宽
gzip 通用性比较强, 后来 Google 搞出了 brotli(br) 算法, 压缩比更高, 比 gzip 体积小 20-30%左右, 新版浏览器基本都支持.
caddy 可以启用实时 gzip, 也有限支持 br, 但如果要实时 br...这东西性能有点糟糕所以被改成插件了(原因看这里).
如果想用更高压缩比的 br 算法, 可以使用预压缩(precompressed), 也就是先全部压缩好, 放在要使用的文件旁边, 这样 caddy 会自动根据浏览器的支持程度选用合适的压缩文件.
3.1 先把静态文件全部压缩
安装 brotli
sudo apt install brotli
之后 cd 到需要压缩的文件夹(注意备份), 比如/root/.hydro/static
然后在文件夹中执行一行 bash 命令, 即可完成对整个文件夹进行递归压缩(gzip 和 br 各一份), 并保留源文件(caddy 要求).
find ./ -type f -size +1400c \
-regex ".*\.\(css\|html\|js\|json\|svg\|xml\)$" \
-exec brotli --best {} \+ \
-exec gzip --best -k {} \+
尽量挑选 cpu 空闲时间干活.
参考资料: https://misterorion.com/caddy-server-brotli/
3.2 caddyfile 中开启 precompressed 选项
配置如上, 如:
...
handle @static { # 处理静态文件的方式
file_server {
precompressed br gzip # 这里可以开启高压缩比算法, 节约流量, 使用方法见下方
}
}
...
然后 caddy reload
3.3 查看是否成功
浏览器调试界面, 网络 tab, 打开 Content-Encoding
选项, 应该能看到 gzip
或者 br
了.
不行的话, 可以检查上方操作, 或者清空浏览器缓存再试.
标签:caddy,Caddy,HydroOJ,gzip,brotli,br,网络带宽,com From: https://www.cnblogs.com/bowen404/p/17888607.html