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;
}