由于网站访问量比较大,导致后端服务器压力山大,所以就利用Nginx的缓存功能,把后端请求全部缓存下来,类似于生成静态页面,但比静态页面好维护。
其中,还要借助ngx_cache_purge模块,ngx_cache_purge是由labs.frickle.com开发的一个Nginx第三方模块,通过该模块使得Nginx可以清除指定URL的缓存页面。
配置如下:
1、下载Nginx、ngx_cache_purge
http://nginx.org/download/nginx-1.6.2.tar.gz
http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
2、安装Nginx及ngx_cache_purge模块
yum -yinstallgccgcc+gcc-c++ openssl openssl-devel pcre pcre-devel
./configure--user=www --group=www --prefix=/usr/local/nginx--with-http_stub_status_module --with-http_ssl_module --add-module=../ngx_cache_purge-2.3
make
makeinstall
3、配置Nginx缓存
http {
proxy_cache_path/data/nginx/proxy_cachelevels=1:2 keys_zone=cache_one:100m inactive=7d max_size=500g;
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_cache cache_one;
proxy_cache_valid 200 304 7d;
proxy_cache_key $host$uri$is_args$args;
expires 7d;
}
location ~/purge(/.*) {
allow 127.0.0.1;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;#其他配置可参考:http://wiki.nginx.org/CachePurgeChs
}
}
}
含义:
/data/nginx/proxy_cache 缓存目录
levels=1:2 指该缓存空间有两层hash目录,第一层目录是1个字符,第二层为2个字符,如:/data/nginx/proxy_cache/2/4a
keys_zone=cache_one:100m 缓存区名称为cache_one,内存缓存空间大小为100M
inactive=7d 缓存时间为7天,m代表分钟,h代表小时,d表示天
max_size=500g 硬盘缓存空间大小为500G
proxy_cache_valid 200 304 7d 使用反向代理时,缓存200、304的请求
proxy_cache_key $host$uri$is_args$args 缓存的key
expires 浏览器里,页面过期的时长,表示response中max-age的值
缓存过期的优先级进行排序为:inactvie、服务器Expires、服务器max-age、proxy_cache_valid
4、修改完Nginx配置文件后,记得检查一下配置文件是否正确,正确才重启Nginx
/usr/local/nginx/sbin/nginx-t -c/usr/local/nginx/conf/nginx.conf
访问下面地址时,nginx就会把这个请求缓存起来,下次再访问时,则不会再访问后端的tomcat或php服务。
http://127.0.0.1/xxx.shtml
如果需要清除缓存,则只需执行下面的地址则可。
http://127.0.0.1/purge/xxx.shtml