对于nginx来说,重复的请求必然会影响系统的效率,因此nginx提供了代理缓存。首先我们思考一下,对于nginx来说缓存肯定是对请求的缓存,也就是说对请求的url作为key,将返回值用value的键值对。在之前讲解基础配置的时候说缓存需要配置缓存的地址和过期时间等。这块我们再学习一下。
注意,要使用nginx缓存,那么必须安装插件ngx_cache_purge,否则是玩不了的!
//缓存路径,inactive表示缓存的时间,levels表示两层目录,keys_zone表示缓存的大小,inactive表示缓存的时间,max_size表示最大的缓存容量。到期之后将会把缓存清理
proxy_cache_path /data/cache/nginx/ levels=1:2 keys_zone=cache:512m inactive = 1d max_size=8g;响应的路由中添加
location ^~ /JXmlEditor/ {
charset utf-8;
#连接超时时间
proxy_connect_timeout 8s;
#发送的超时时间
proxy_send_timeout 8s;
#读取下游连接的超时时间
proxy_read_timeout 8s;
#缓存的配置名称
proxy_cache tmp-test;
#对200等接口建立10分钟的缓存
proxy_cache_valid 200 206 304 301 302 10m;
#对其他的请求,缓存1分钟
proxy_cache_valid any 1m;
#请求的缓存key为请求连接
proxy_cache_key $uri$is_args$args;
add_header X-Cache $upstream_cache_status;
#使用真实的用户地址
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_pass http://jxmleditor/JXmlEditor/;
}缓存的清理
#手动清除缓存
location ^- /tmp-test {
allow 127.0.0.1; //只允许本机访问
deny all; //禁止其他所有ip
#删除指定的请求的缓存
proxy_cache_purge tmp-test $uri$is_args$args;
}