Nginx实现HTTP缓存

使用 proxy_cache_path 属性进行配置。语法如下:

Syntax:	proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time] [max_size=size] ;
参数 作用
path 缓存存放根路径
levels 表示缓存目录下的层级目录结构,它是根据哈希后的请求URL地址创建的,目录名称从哈希后的字符串结尾处开始截取。如哈希后的请求链接地址为 xxxxxxxxx123abc,则levels=3:3 表示,第一层级目录的名称是长度为3的字符abc,第二层子目录的名称是长度为3的字符123。
keys_zone 指定缓存区名称及共享内存大小。在共享内存中设置一块存储区域来存放缓存的 key 和 metadata(类似使用次数),这样nginx可以快速判断一个request是否命中缓存,1m可以存储8000个key,10m可以存储80000个key。
inactive 表示主动清空在指定时间内为被访问的缓存,10m表示10分钟。
max_size 最大cache磁盘空间,如果不指定,会使用掉所有dist space,当达到配额后,会删除最少使用的cache文件。

如何使用proxy_cache

location /proxy_cache_test/ {
     
  proxy_cache proxy_cache_test;
  proxy_cache_valid  200 206 304 301 302 10d;
  proxy_cache_key $uri;
  proxy_set_header Host $host:$server_port;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
}

配置项介绍:
Proxy_cache tmp -test 使用名为 tmp -test 的对应缓存配置
proxy_cache_valid 200 206 304 301 302 10d; 对httpcode为200…的缓存10天
proxy_cache_key $uri 定义缓存唯一key,通过唯一key来进行hash存取
proxy_set_header 自定义http header头,用于发送给后端真实服务器。

清理缓存 proxy_cache_purge

使用 proxy_cache_purge 模块,该模块与proxy_cache成对出现,功能正好相反。

配置方法:

location /proxy_cache_test/ {
     
	proxy_cache_purge proxy_cache_test $uri;  //清理缓存
}

proxy_cache_purge:缓存清理模块
tmp-test:指定的key_zone
$uri:指定的生成key的参数

你可能感兴趣的:(#,高性能Nginx)