1.web缓存位于原web服务器和客户端之间,当用户访问一个URL时,web缓存服务器会去后端web服务器取回要输出的内容,当下一个访问时相同的url时,web缓存服务器直接输出内容给客户端。

proxy_temp_path /data/proxy_temp_path;
proxy_cache_path /data/proxy_cache_path levels=1:2 keys_zone=cache_one:300m  inactive=1d max_size=30g;

upstream zhuzhu {
server 192.168.70.133;
}
server {
listen 80;
server_name www.zjt.com;
access_log logs/zit.log;
error_log logs/zjt.error.log;
root /var/www/html;
index index.html index.htm index.php;
location / {
proxy_pass http://zhuzhu;
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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
client_body_buffer_size 128k;
client_max_body_size 50m;
proxy_max_temp_file_size 128m;
proxy_connect_timeout   90;
proxy_read_timeout      90;
proxy_buffer_size       4k;
proxy_buffers           4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_cache cache_one;
proxy_cache_valid 200 304 12h;
proxy_cache_valid 301 302 1m;
proxy_cache_valid any 1m;
proxy_cache_key $host$uri$is_args$args;
}
location ~ /purge(/.*)
{
allow 127.0.0.1;
allow 192.168.70.134;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
}
}

2.清除缓存的模块ngx_cache_purge是第三方的,需要添加编译到nginx中去。

wget http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz
tar zxvf ngx_cache_purge-2.1.tar.gz
[root@zhu1 vhosts]# /opt/nginx/sbin/nginx -V
nginx version: nginx/1.4.2
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-54)
TLS SNI support disabled
configure arguments: --prefix=/opt/nginx --with-poll_module --with-http_gzip_static_module --with-http_ssl_module --with-http_stub_status_module
[root@zhu1 nginx-1.4.2]# ./configure --prefix=/opt/nginx --with-poll_module --with-http_gzip_static_module --with-http_ssl_module --with-http_stub_status_module --add-module=/root/ngx_cache_purge-2.1
make
mv /opt/nginx/sbin/nginx /opt/nginx/sbin/nginx.bak
\cp objs/nginx /opt/nginx/sbin/nginx

3.查看产生的缓存目录

[root@zhu1 ~]# ll /data/proxy_cache_path/
1/ 2/ 3/ 4/ 6/ 7/ 8/ 9/ a/ b/ c/ d/ e/ f/

配置缓存指令详解

proxy_cache  缓存区名  :设置那个缓存区将被使用,缓存区名的值为proxy_cache_path  参数创建的

proxy_cache_path    [levels=number]  keys_zone=zone_name:zone_size  [inactive=time]  [max_size=size];

设置缓存文件的存放路径

proxy_cache_path /data/proxy_cache_path levels=1:2 keys_zone=cache_one:300m  inactive=1d max_size=30g;

levels指定该缓存空间有两层hash目录,第一层目录为1个字母第二层目录为2个字母,保存文件名类似

[root@zhu1 ~]# ll /data/proxy_cache_path/1/c3/3380afab295325423fcfa98e2f585c31
-rw------- 1 www www 13937 08-26 13:47 /data/proxy_cache_path/1/c3/3380afab295325423fcfa98e2f585c31

keys_zone :指定这个缓存区的名字,

inactive=1d :指这个缓存的内容如果1天没有被访问,将会被删除

max_size :设定硬盘的缓存空间为30GB

proxy_cache_memthods  设置缓存那些http方法,默认为HTTP GET /HEAD

proxy_cache_min_uses 设置缓存的最小使用次数,默认值为1

proxy_cache_valid 对不同返回状态码的url,设置不同的缓存时间

没有设置的默认为1分钟

proxy_cache_key :设置web缓存的key值,nginx根据key值的md5哈希存储缓存,一般

$host$uri$is_args$args