方法二:
找到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)