1.添加安装清除缓存模块
使用参数重新配置
./configure --prefix=/app/nginx -user=nobody -group=nobody --with-http_stub_status_module \
--with-http_ssl_module --with-http_realip_module \
--add-module=../nginx_upstream_hash-0.3.1/ \
--add-module=/opt/sxt/ngx_cache_purge-2.3
前面怎么安装的这里参数全部相同,路径什么的也需要相同
Make
不执行make install
然后替换nginx二进制文件:
cp /opt/sxt/soft/tengine/sbin/nginx /app/nginx/sbin/nginx.bak
cp ./objs/nginx /opt/sxt/soft/tengine/sbin/
2.配置缓存
注意缓存的基本上都是静态的东西,动态的插了java代码之类的是缓存不了的
在http的范围里面需要配置的就两个东西:
proxy_temp_path和proxy_cache_path以下是配置意义
当然levels和keys_zone这种东西也是需要配置的
#proxy_temp_path代理临时目录
proxy_temp_path /var/temp/nginx/proxy;
#proxy_cache_path代理缓存目录,和proxy_temp_path必须在同一个分区
#/var/temp/nginx/proxy_cache_dir缓存目录
#levels指定该缓存空间有两层hash目录,第一层目录名是1个字母或数字长度,第二层目录名为2个字母或数字长度
#keys_zone=cache_one:50m缓存区名称为cache_one,在内存中的空间是50M,inactive=1d表示1天清空一次缓存 ,max_size指定磁盘空间大小为500M
proxy_cache_path /var/temp/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:50m inactive=1d max_size=500m;
然后是配置缓存的东西和缓存的条件
这里最重要的是proxy_cache cache_one;(注:这里的proxy_cache一定是前面的keys_zone)和proxy_cache_key $host$uri$is_args$args,以及后面缓存没有的时候的proxy_pass
location ~ /item(/.*){
#指定缓存区域名称
proxy_cache cache_one;
#以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希
proxy_cache_key $host$uri$is_args$args;
#请求头中添加请求的主机名
proxy_set_header Host $host;
#请求头中添加真实的客户端ip,通过X-Forwarded-For可获取
proxy_set_header X-Forwarded-For $remote_addr;
#代理访问后端tomcat
#请求item从缓存中找,如果缓存中没有则向tomcat请求
#$1表示取出正则表达式(/.*)所匹配的内容,使用$1的效果例如请求http://ccc.test.com/item/100010.html则请求tomcat服务器 http://ip:port/100010.html
#如果不使用$1则会将/item/...加在tomcat服务地址之后访问,即http://ip:port/item/100010.html
proxy_pass http://tomcat_server_pool$1;
}
然后就是在匹配之前配置一个purge,最重要的匹配的上和proxy_cache_purge cache_one $host$1$is_args$args
location ~ /purge(/.*)
{
#安全设置,指定请求客户端的IP或IP段才可以清除URL缓存,这里为了方便测试设置为all
#allow 127.0.0.1;
allow all;
#指定清空缓存的区域名称cache_one(要和上边proxy_cache_path缓存配置中指定的缓存区域名称一致)
#指定缓存的key规则$host$1$is_args$args,要和下边设置缓存的key一致$host$uri$is_args$args
#注意$host$1$is_args$args中的$1表示当前请求的uri,$host$1$is_args$args=$host$uri$is_args$args
proxy_cache_purge cache_one $host$1$is_args$args;
}
注意:本文归作者所有,未经作者允许,不得转载