该指令用于配置一块公用的内存区域的名称,该区域可以存放缓存的索引数据。这些数据在Nginx服务器启动时由缓存索引重建进程负责建立,在Nginx服务器的整个运行过程中由缓存管理进程负责定时检测过期数据,检索等管理工作。
proxy_cache zone | off;
zone,设置的用于存放缓存索引的内存区域的名称。
off,关闭proxy_cache 功能,是默认的设置。
该指令用于配置Nginx服务器向客户端发送响应数据时,不从缓存中获取的条件。这些条件支持使用Nginx 配置的常用变量。
proxy_cache_bypass string …;
string为条件变量,支持设置多个,当至少有一个字符串指令不为空或者不等于О时,响应数据不从缓存中获取。
看一个例子: proxy_cache _bypass $cookie_nocache $arg nocache $Sarg_comment
$http_pragma $http.authorization;
其中,Scookie_nocache、Sarg_nocache、Sarg_comment、Shttp_pragma
和Shttp_authorization 都是Nginx配置文件的变量,
该指令用于设置Nginx服务器在内存中为缓存数据建立索引时使用的关键字
proxy cache key string;
string为设置的关键字,支持变量。
如果我们希望缓存数据包含服务器主机名称等关键字,则可以将该指令设置为:
proxy_cache_key “s c h e m e schemeschemehost$request”;
该指令用于设置是否开启缓存的锁功能。在缓存中,某些数据项可以同时被多个请求返回的响应数据填充。开启该功能后,Nginx服务器同时只能有一个请求填充缓存中的某一数据项,这相当于给该数据项上锁,不允许其他请求操作。其他的请求如果也想填充该项,必须等待该数据项的锁被释放。这个等待时间由
proxy_cache_lock_timeout 指令配置。
proxy_cache_lock on | off;
默认情况下为关闭
该指令用于设置缓存的锁功能开启以后锁的超时时间。具体细节参见proxy_cache_lock 指令的相关内容
proxy cache_ lock_timeout time;
其中,time为设置的时间,默认为5s。
该指令用于设置客户端请求发送的次数,当客户端向被代理服务器发送相同请求达到该指令设定的次数后,Nginx服务器才对该请求的响应数据做缓存。合理设置该值可以有效地降低硬盘上缓存数据的数量,并提高缓存的命中率。
proxy_cache_min_uses number;
其中,number为设置的次数。默认设置为1。
该指令用于设置Nginx服务器存储缓存数据的路径以及和缓存索引相关的内容
proxy_cache_path [levels=levels] keys_zone=name:sizel [inactive=time1] [max_size=size2][loader_files=number] [loader_sleep=time2][loader_threshold-time3];
该指令设置比较复杂,一般需要设置前面三个指令的情形比较多,后面的几个变量与Nginx服务器缓存索引重建进程及管理进程的性能相关,一般情况下保持默认设置就可以了。我们来看几个简单的配置实例:
proxy_cache path /nginx/cache/a levels=1 keys_zone=a:10m; proxy_cache_path /nginx/cache /b levels-2:2 keys_zone=b:100m; proxy _cache_path /nginx/cache/c levels=1:1:2 keys_zone=c:1000m;
如果Nginx在访问被代理服务器过程中出现被代理的服务器无法访问或者访问错误等现象时,Nginx服务器可以使用历史缓存响应客户端的请求,这些数据不一定和被代理服务器上最新的数据相一致,但对于更新频率不高的后端服务器来说,Nginx服务器的该功能在一定程度上能够为客户端提供不间断访问。该指令用来设置一些状态,当后端被代理的服务器处于这些状态时,Nginx服务器启用该功能。
该指令可以支持的状态如语法结构中所示。
proxy_cache_use_stale error| timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_404 | off..·:
该指令可以针对不同的HTTP响应状态设置不同的缓存时间
proxy_cache_valid [code…] time;
proxy_cache_valid 200 302 10m; proxy_cache_valid 301 1h; proxy_cache_valid any 1m;
上述例子中,对返回状态为200和302的响应数据缓存10分钟,对返回状态为301的响应数据缓存1小时,对返回状态为非200、302和301的响应数据缓存1分钟。
该指令同于配置在什么情况下不使用cache功能
proxy_no_cache $string…;
string 可以是一个或者都多个变量。当string的值不为空或者不为0时,不启用cache功能
该指令配置是否在本地磁盘缓存来自被代理服务器的响应数据。这是Nginx服务器提供的另一种缓存数据的方法,但是该功能相对 Proxy
Cache简单一些,它不提供缓存过期更新、内存索引建立等功能,不占用内存空间,对静态数据的效果比较好。
proxy_store on | off | string;
Proxy Store方法多使用在被代理服务器端发生错误的情况下,用来缓存被代理服务器的响应数据。
该指令用于设置用户或用户组对Proxy Store缓存的数据的访问权限
proxy_store_access users:permissions …
有关Proxy Store方法的使用,我们通过官方给出的实例加深理解,在该实例中笔者通过注释对配置做了说明:
location /images/ { root /data/www; error_page 404 = /fetch$uri; #定义了404错误的请求页面 } location /fetch/ #匹配404错误时的请求 { proxy_pass http://backend; proxy_store on; #开启Proxy store方法 proxy_store_access user:rw group:rw all:r; root/data/www; #缓存数据的路径 }
到此这篇关于详解ngx_cache_purge _proxy_cache指令使用的文章就介绍到这了,更多相关ngx_cache_purge _proxy_cache指令内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!