nginx 缓存清理

方法二:
找到nginx的缓存目录 如果缓存不多的话可以选择直接删除缓存目录里面的东西,如果缓存特别大的情况则需要找到对应缓存的文件进行删除。
 
方法三:
若配置了缓存清除功能(可清除指定文件缓存)

nginx具有web缓存服务,proxy_cache,但是有一个问题就是,proxy_cache不能清除指定的URL缓存,只能设置URL过期时间,但是有问题,有人就会很快解决问题,nginx第三方模块ngx_cache_purge能清除指定URL。

  nginx安装时需要将ngx_cache_purege加载进去。

 

./configure --user=www --group=www --add-module=/root/dxm/nginx/ngx_cache_purge-1.2   

 

其中,/root/dxm/nginx/ngx_cache_purge-1.2为ngx_cache_purge解压路径(附件中提供ngx_cache_purge tar包下载)

现在来一段实例,实现图片缓存:

   话说proxy_tem_path,与proxy_cache_path必须在同一个分区之下!

 

proxy_temp_path /usr/local/nginx/proxy_temp;  
proxy_cache_path /usr/local/nginx/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=1g;

 

 

复制代码
upstream tomcat_server{  
server 127.0.0.1:8080;
}


server{
listen 192.168.154.128;
server_name www.wolf.com;

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{

proxy_cache cache_one;
proxy_cache_methods GET HEAD POST;
proxy_cache_min_uses 1;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_cache_valid any 1m;
proxy_cache_key "$host:$server_port$uri$is_args$args";

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://tomcat_server;


}


location ~ .*\.(jsp)$ {

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://tomcat_server;

}


location ~ /purge(/.*)
{
allow 192.168.154.128;
allow 192.168.154.1;
deny all;
proxy_cache_purge cache_one $host:$server_port$1$is_args$args;
}
复制代码

 

恩,静态页面缓存,动态请求不缓存!

大家看一下最后一段的那个purege配置,很显然,表示哪些IP可以手动清除指定的URL

比如,www.wolfdraem.cn/1.jpg可以访问到我的图片,那么用www.wolfdream.cn/purge/1.jpg  就可以清除图片缓存了。


 
 

删除nginx缓存文件
一:脚本

a shell版

#!/bin/bash
  
#Date: 2013-06-27
#Auther: budong
  
#######################################################
#说明:
#  1.本脚本用于清除nginx缓存文件
#  2.查看你的nginx是根据什么作为key来hash的,我的设置是 proxy_cache_key $uri$is_args$args;
#  因此nginx会根据$uri$is_args$args作为key进行hash,因此可以模拟nginx对一个key进行再
#  hash找到相应的文件路径,删除(具体可随意找个缓存文件 more 一下看看)
#  3.缓存设置 proxy_cache_path /data/mumayi/cache levels=1:2 keys_zone=cache_one:6000m inactive=15d max_size=200g;
#  根据相应的配置,请做相应修改测试
#  4.uri格式请按照同级目录下rm_apk_list.txt中填写
#####################################################
  
while read -r line
do
  md5uri=`echo -n $line | md5sum | awk '{ print $1 }'`
  filepath=`echo "$md5uri" awk '{print "/data/mumayi/cache/"substr($0,length($0),1)"/"substr($0,length($0)-2,2)"/"$0}'`
  rm -rf $filepath
done /root/sbin/rm_apk_list.txt
b python版
  
#!/usr/local/python2.7/bin/python2.7
# -*- coding:utf8 -*-
  
#Date: 2013-06-26
#Name: budong
  
'''
说明:
  1.本脚本用于清除nginx缓存文件
  2.查看你的nginx是根据什么作为key来hash的,我的设置是 proxy_cache_key $uri$is_args$args;
  因此nginx会根据$uri$is_args$args作为key进行hash,因此可以模拟nginx对一个key进行再
  hash找到相应的文件路径,删除(具体可随意找个缓存文件 more 一下看看)
  3.缓存设置 proxy_cache_path /data/mumayi/cache levels=1:2 keys_zone=cache_one:6000m inactive=15d max_size=200g;
  根据相应的配置,请做相应修改测试
  4.uri格式请按照同级目录下rm_apk_list.txt中填写
'''
import os
import sys
try:
  from hashlib import md5
except:
  from md5 import md5
  
reload( sys )
sys.setdefaultencoding('utf-8')
  
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
URI_FILE = ''.join([PROJECT_ROOT,'/rm_apk_list.txt'])
  
def nginx_purge(uri):
  m = md5()
  m.update("%s" % uri)
  md5uri=m.hexdigest()
  md5uri_len=len(md5uri)
  dir1=md5uri[md5uri_len-1:]
  dir2=md5uri[md5uri_len-3:md5uri_len-1]
  file_path=("/data/mumayi/cache/%s/%s/%s" % (dir1, dir2, md5uri))
  if os.path.exists(file_path):
    os.remove(file_path)
  
with open("%s" % URI_FILE,'r') as uri_file:
  for line in uri_file:
    line = line.rstrip()
    nginx_purge(line)
posted @ 2018-05-23 16:09  日出东海,我心向西  阅读(2850)  评论(0)    收藏  举报