实例学习nginx的cache功能,供大家学习参考。
一.nginx的proxy_cache模块,据说比squid对多核的支持好很多。
复制代码代码如下:
#所需软件:
wget http://labs.frickle.com/files/ngx_cache_purge-1.3.tar.gz pcre,nginx-0.8.29.tar.gz # purge模块 http://labs.frickle.com/nginx_ngx_cache_purge/ #安装 tar -zxvf ngx_cache_purge-1.0.tar.gz tar -zxvf nginx-0.8.29.tar.gz cd nginx-0.8.29 ./configure --user=www --group=www --add-module=../ngx_cache_purge-1.0 --prefix=/usr/local/gp/nginx --with-http_stub_status_module --with-http_ssl_module make && make install
复制代码代码如下:
mkdir -p /data0/proxy_temp_path
mkdir -p /data0/proxy_cache_path
复制代码代码如下:
/data0/proxy_cache_path levels=1:2 keys_zone=cache_one:200m
inactive=1d max_size=500m;
levels设置目录层次
三.nginx.conf 只写关键步骤
复制代码代码如下:
# 日志格式设置命中状态有HIT,EXPIRED
upstream my_server_pool {
# 设置缓存的文件类型,建议在后端设置缓存时间通过expires cache-control:max-age=[ses] proxy_cache_key $host$uri$is_args$args;
#####
location ~ /purge(/.*)
四.测试
命中率:
复制代码代码如下:
#!/bin/bash
# author:gupeng # proxy_cache hit rate if [ "$1" != '' ];then if [ -e "$1" ];then HIT=`cat $1 | grep HIT | wc -l` ALL=`cat $1 | wc -l` Hit_rate=`echo "scale=2;($HIT/$ALL)*100" | bc` echo "Hit rate=$Hit_rate%" else echo "$1 not exsist!" fi else echo "usage: ./hit_rate.sh file_path" fi
五、命中状态说明
·MISS
updating 正在更新,将使用旧的应答 |