最近给公司项目部署了两台cache用于缓解源站压力,由于域名太多就拿openresty实现了方便配置,要是能开发成一套完整的系统就好了,博主还在往开发路线爬(苦逼)争取转行做码农,再忍忍说不定明天就猝死了。
nginx本身做cache存在部分缺陷,还好博主动手能力强,基本可以当个小cache了。XD
已实现功能:
支持http2.0
支持gzip/brotli双压缩算法
支持全站缓存、首页缓存、静态资源缓存
自定义错误页
回源合并
多源站回源cookie粘滞
支持图片有损压缩、锐化、裁剪
删除网页空白和多余注释
支持js/css文件合并
缓存按目录/url方式purge
js、验证码方式的cc攻击防御
自动webp转换
我这里拿10G内存做了一个内存盘,以让nginx可以提供内存命中。
tmpfs /disk1 tmpfs size=10240m 0 0
uuid /disk2 ext4 defaults 0 0
uuid /disk3 ext4 defaults 0 0
多磁盘负载均衡,多硬盘没raid可提升性能,当然那块内存盘可以拿出来单独做小文件缓存。
proxy_cache_path /disk1 levels=1:2 keys_zone=cache_disk1:50m inactive=365d max_size=10g use_temp_path=off;
proxy_cache_path /disk2 levels=1:2 keys_zone=cache_disk2:50m inactive=365d max_size=2000g use_temp_path=off;
proxy_cache_path /disk3 levels=1:2 keys_zone=cache_disk3:50m inactive=365d max_size=2000g use_temp_path=off;
split_clients $request_uri $disk {
33% disk1;
33% disk2;
* disk3;
}
我们来简单了解下nginx cache的hash key计算方法:
以如下设定key为例:
proxy_cache_key $host$uri$is_args$args;
那么解析出的结果应该就是:
www.lijian.me/logo/1.png
hash key值就为:
echo -n "www.lijian.me/logo/1.png" |md5sum
b7c88a62092d5af6c17682a151607bf2
那么根据目录层级,就可以找到该图片对应存储的目录:
/disk1/2/bf/b7c88a62092d5af6c17682a151607bf2
最新评论
世间因为有你而美丽!我也一直想当个志愿者,奈何身体不允许
告诉那小孩 叫哥哥
666
123
此时此刻,感慨万千,旧的一年已经过去,新的一年已经到来,展望未来,美好的日子正等 着我们去奋斗,愿在新的一年里,我们能够继续经受住考验,克服困难,春暖花开
智能插座都是扯,插座还是公牛好用
下载链接失效了 求补
连接失效了