NGINX通常作为应用程序堆栈中的反向代理或负载平衡器部署,并具有一整套缓存功能
如何设置和配置基本缓存
只需要两个指令即可启用基本缓存:[proxy_cache_path](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path)
和[proxy_cache](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache)
。该proxy_cache_path
指令设置缓存的路径和配置,proxy_cache
指令激活它
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g
inactive=60m use_temp_path=off;
server {
# ...
location / {
proxy_cache my_cache;
proxy_pass http://my_upstream;
}
}
该proxy_cache_path
指令的参数定义了以下设置:
- 缓存的本地磁盘目录称为/ path/ to/cache /。
-
levels
在/ path/ to/cache /下设置一个两级目录层次结构。在单个目录中包含大量文件会降低文件访问速度,因此我们建议对大多数部署使用两级目录层次结构。如果levels
未包含该参数,NGINX会将所有文件放在同一目录中。 -
keys_zone
设置共享内存区域,用于存储缓存键和元数据,例如使用计时器。将键的拷贝放入内存可以使NGINX在不检索磁盘的情况下快速决定一个请求是HIT
还是MISS
,这样大大提高了检索速度。。1 MB区域可以存储大约8,000个密钥的数据,因此示例中配置的10 MB区域可以存储大约80,000个密钥的数据。 -
max_size
设置缓存大小的上限(在本例中为10G字节)。它是可选的; 不指定值允许缓存增长以使用所有可用磁盘空间。当缓存大小达到限制时,称为缓存管理器的进程将删除最近最少用于将缓存大小恢复到限制之下的文件。 -
inactive
指定项目在未被访问的情况下可以保留在缓存中的时间长度。在上面的例子中,如果一个文件在60分钟之内没有被请求,则缓存管理将会自动将其在内存中删除,不管该文件是否过期。默认值为10分钟(10m
)。非活动内容与过期内容不同。NGINX不会自动删除缓存控件头定义的已过期内容(Cache-Control:max-age=120
例如)。过期(陈旧)内容仅在指定时间内未被访问时被删除inactive
。访问过期内容时,NGINX会从原始服务器刷新它并重置inactive
计时器。 - NGINX首先将发往高速缓存的文件写入临时存储区域,该
use_temp_path=off
指令指示NGINX将它们写入将被高速缓存的相同目录。我们建议您将此参数设置off
为避免在文件系统之间进行不必要的数据复制。use_temp_path
在NGINX 1.7.10和NGINX Plus R6中引入。
网友评论