nginx proxy_cache 配置
nginx缓存中,key是保存在内存中,而value是保存在磁盘的文件系统中,所以开启nginx缓存效果并没有使用redis或是本地缓存(guava_cache)效果好。
1.proxy_cache_path
proxy_cache_path /.../temp_cache levels=1:2 keys_zone=my_cache:100m max_size=2g inactive=7d;
1)levels=1:2
nginx会在上述配置的缓存文件路径下再创建两级目录,第一级目录命名为一个字符,第二级目录命名为2个字符。
2)keys_zone=my_cache:100m
在nginx内存中开了100m大小的内存空间来保存所有keys_zone中所有的key,并且my_cache这个缓存名称会在下面location中用到。
3) max_size=2g
缓存文件最大值,当缓存文件大小超过2g后采用LRU的淘汰算法。
2.location
location / {
#配置上面定义的缓存空间名称
proxy_cache my_cache;
#设置缓存的key,还可以根据url中的参数进行自定义;$args表示所有参数,也可以使用其中的一个参数,例如:$arg_userId,表示只取参数列表中的userId参数
proxy_cache_key $uri$args;
#返回状态码为200才会写入缓存文件中,缓存后期7天,最好与上面path的有效期一致
proxy_cache_valid 200 7d;
#缓存并发锁,当nginx缓存没有命中的时候只有一个请求回源tomcat请求数据,其他请求会等待
proxy_cache_lock on;
...
}