nginx根据日志清除缓存脚本
来源:互联网 发布:boss软件 编辑:程序博客网 时间:2024/06/15 12:55
最近要管理一个新网站www.nehosoft.com,线上前端nginx服务用来做后端图片服务的缓存代理服务器,但后端图片服务器在对用户上传的图片进行处理以后,有时会出现图片无法显示等问题,当出现这种情况的时候,该图片,我们就不希望被nginx缓存,如果被缓存,则要被清除。
分别用两种不同的脚本方案来解决:
1.通过过滤日志中状态码正常(即200)及图片大小小于100字节的url路径去查找缓存路径,进而清除缓存,脚本如下:
#!/bin/bash
cache_path=/home/nginx/proxy_cache_dir
logfile=/home/nginx/logs/access.log
datetime=`date +%d/%b/%Y`
logdir=/home/nginx/logs
#查找出所有当天nginx日志中状态码为200,大小小于100字节且被缓存命中的url,并将其保存至url.list
grep "$datetime" $logfile | awk '{if($9 == 200 && $10 < 100 && $NF ~ "HIT") print $7}' | sort -n | uniq > url.list
for i in `cat url.list`
do
#根据nginx日志中过滤的url查找缓存目录,对缓存中的url作处理后,保存到cache.list文件中
grep -a -r "$i" $cache_path| strings |grep "KEY: " | awk -F'KEY: ' '{print "http://"$2;}' | grep [a-zA-Z0-9]$ > cache.list
#再次对url进行处理
sed -i "s#1img.looklook.cn/#1img.looklook.cn:7086/purge/#" cache.list
#清除缓存
for url in `cat cache_list.txt`
do
curl "$url" | tee -a $logdir/purgelog/$(date +%y%m%d).log
done
done
2.将nginx日志复制为一个副本,然后通过新的nginx日志跟副本的比较,对变化的一部分直接做awk处理
#!/bin/bash
F=/home/nginx/logs/access.log
O=/home/nginx/logs/old.log
if [ ! -f $O ]
then
cp $F $O
exit 3
fi
diff $F $O | \
awk '{if($10 ==200 && $11< 100 && $NF ~ "HIT") print "http://1img.looklook.cn:7086/purge"$8}' | sort | uniq | \
awk '{system("curl \""$1"\"|tee -a /home/nginx/logs/purgelog/$(date +%y%m%d).log")}'
cat $F > $O
分别用两种不同的脚本方案来解决:
1.通过过滤日志中状态码正常(即200)及图片大小小于100字节的url路径去查找缓存路径,进而清除缓存,脚本如下:
#!/bin/bash
cache_path=/home/nginx/proxy_cache_dir
logfile=/home/nginx/logs/access.log
datetime=`date +%d/%b/%Y`
logdir=/home/nginx/logs
#查找出所有当天nginx日志中状态码为200,大小小于100字节且被缓存命中的url,并将其保存至url.list
grep "$datetime" $logfile | awk '{if($9 == 200 && $10 < 100 && $NF ~ "HIT") print $7}' | sort -n | uniq > url.list
for i in `cat url.list`
do
#根据nginx日志中过滤的url查找缓存目录,对缓存中的url作处理后,保存到cache.list文件中
grep -a -r "$i" $cache_path| strings |grep "KEY: " | awk -F'KEY: ' '{print "http://"$2;}' | grep [a-zA-Z0-9]$ > cache.list
#再次对url进行处理
sed -i "s#1img.looklook.cn/#1img.looklook.cn:7086/purge/#" cache.list
#清除缓存
for url in `cat cache_list.txt`
do
curl "$url" | tee -a $logdir/purgelog/$(date +%y%m%d).log
done
done
2.将nginx日志复制为一个副本,然后通过新的nginx日志跟副本的比较,对变化的一部分直接做awk处理
#!/bin/bash
F=/home/nginx/logs/access.log
O=/home/nginx/logs/old.log
if [ ! -f $O ]
then
cp $F $O
exit 3
fi
diff $F $O | \
awk '{if($10 ==200 && $11< 100 && $NF ~ "HIT") print "http://1img.looklook.cn:7086/purge"$8}' | sort | uniq | \
awk '{system("curl \""$1"\"|tee -a /home/nginx/logs/purgelog/$(date +%y%m%d).log")}'
cat $F > $O
0 0
- nginx根据日志清除缓存脚本
- 使用Shell脚本批量清除Nginx缓存
- nginx清除缓存图片
- nginx清除缓存ngx_cache_purge
- Linux 日志清除脚本
- Nginx Purge清除缓存配置
- shell脚本清除squid缓存
- SQL2008清除数据库日志脚本
- SQL2008清除日志文件脚本
- Nginx系列(十五. nginx清除缓存)
- nginx日志切割脚本
- linux Nginx 日志脚本
- nginx 日志分割脚本
- nginx 日志分割脚本
- nginx 日志分割脚本
- Nginx日志切割脚本
- nginx日志分割脚本
- nginx 日志切割脚本
- HDU 4310 Hero(贪心)
- http协议简介
- django modeForm总结!
- 超轻量级缓存技术——EhCache
- Android中的“再按一次返回键退出程序”实现
- nginx根据日志清除缓存脚本
- oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解
- 奇异值分解和非负矩阵分解
- 【应用篇】Activiti监听与业务颗粒结合的简单应用(三)
- 构筑极致用户体验-ROADs
- Android总结篇系列:Android Intent
- javascript学习心得
- 设置自定义UITableViewCell之间的间距
- 解决ofbiz调试运行时报错:Can't find bundle for base name cache