首页 > 编程语言 >HydroOJ 从入门到入土(6)Caddy设置自动SSL证书, 开启高压缩比算法(brotli)节约网络带宽

HydroOJ 从入门到入土(6)Caddy设置自动SSL证书, 开启高压缩比算法(brotli)节约网络带宽

时间:2023-12-08 17:25:55浏览次数:45  
标签:caddy Caddy HydroOJ gzip brotli br 网络带宽 com

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

相关文章

  • HydroOJ 从入门到入土(5)插件集锦
    总有些需求,未必有啥用,但是很可爱.本文将介绍一些插件相关的知识,并不专业,因为我不懂js(逃目录1.关于插件2.官方插件3.三方插件4.官方站上的第三方插件1.关于插件插件使用js/ts语言编写.插件功能强大,分前后端,可以干任何事情,所以尽量不要使用来路不......
  • HydroOJ 从入门到入土(4)控制面板-系统设置详解
    控制面板内众多配置项眼花缭乱,至于说明文档...这个真没有!这里的配置有很多,如果装了插件,有一些插件的配置项也是在这里修改,所以很有必要了解一下这些选项都是干什么的.目录SMTP设置服务器设置setting_limits各种保护性限制基础设置Session设置hydroojui-default显......
  • HydroOJ 从入门到入土(3)权限管理
    管理OJ就是管理资源,管理资源就是管理权限.HydroOJ的用户权限使用位运算,所以看起来比较奇怪.权限管理分两块:系统权限和域权限,这两个是分开的.1.系统权限(控制面板->用户权限)装完系统设置好超级管理员之后,该用户自动root权限(所有权限).guest是未注册用户......
  • HydroOJ 踩坑指南(2)服务器选择和部署
    Hydro官方的高级域其实不错,还支持自定义logo和域名,功能也全,但是用了自定义域名,很多的题包括洛谷的就没法用了,而且很多项没法自定义,偶尔会响应时间过长,题目数据不在本地等等,最后发现,还不如自己配置个服务器,这样更有折腾的成就感.服务器的选择可以用阿......
  • HydroOJ 踩坑指南(1)狡猾的分布式官方文档
    本系列旨在记录使用HydroOJ时的一些坑点,更全的说明文档请查看官方文档。欢迎联系本人QQ补充:2422609586.HydroOJ官方QQ群:1085853538.入门第一坑:官方文档不止一处!都说学习项目要先认真读文档,HydroOJ的文档使用了分布式阅读系统,并异地多中心部署(bushi),所以需要汇总一下:......
  • Linux进行网络带宽优化
    如何使用Linux进行网络带宽优化网络带宽的优化是提高网络传输速度和质量的关键。在Linux系统中,有许多方法可以帮助我们优化网络带宽调整内核参数调整Linux内核参数可以改善网络性能。a)修改TCP窗口大小TCP窗口大小决定了发送和接收数据的速度。通过增加TCP窗口大小,可以加快网络......
  • Caddy设置try_files导致handle配置失效
    问题在Caddy中,请求路径默认会在Caddy的路径中查找。然而,如果是Vue项目,URI通常会是路由,如果此时刷新页面就可能导致页面出错。因此,我们可以使用try_files来在页面找不到时重定向到index.html。try_files{path}/index.html;然而,加入这种配置会导致handle的监听路径冲突,从......
  • caddy 替代nginx? caddy测试体验
    安装官网:https://caddyserver.com帮助文档:https://caddy2.dengxiaolong.com/docs/runningcadddy也是一个守护进程的前后台守护应用,后台服务一直监听cli的操作所有所有的service的操作都支持优势目前来看caddy的的优势是==nignx+acme.shUbuntu下安装sudoaptinstall-......
  • 限制指定软件(进程)的网络带宽或设置优先级
    NetLimiter是一款功能强大的网络带宽控制软件,可以让您限制特定应用程序的网络带宽。它支持Windows7、8、10、11操作系统。下载页https://www.netlimiter.com/downloadhttps://download.netlimiter.com/nl/netlimiter-5.3.5.0.exe截图破解该软件可免费试用,但特定功能或......
  • Go每日一库之131:caddy(轻量web服务器)
    一直以来,我都是使用Nginx作为Web服务器,但是配置可以说是非常麻烦了。每次我要新开一个域名,都要先使用acme.sh签发SSL证书,然后再写配置,大概要花上5分钟的时间。曾经想过写个脚本自动完成这些工作,但是苦于对Linux的了解不多,也就作罢了。最近看到了Caddy,一个用Go写的......