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