Nginx优化秘籍(二)proxy_cache_path
为了优化速度,nginx配置可proxy_cache_path模块缓存数据
什么是Nginx缓存?
Nginx基于Proxy Store实现,使用Nginx的http_proxy模块可以实现类似于squid的缓存功能。当启用缓存时,Nginx会将相应数据保存在磁盘缓存中,只要缓存数据尚未过期,就会使用缓存数据来响应客户端的请求。
如何启用缓存?
Nginx启用缓存需要在最顶层的http节点下,如:/etc/nginx/nginx.conf 配置
启用响应缓存
若想启用缓存,需在 http 中使用 proxy_cache_path 指令。其第一个强制参数为用于缓存内容的本地文件系统路径,第二个强制参数为 keys_zone,定义 共享内存区(shared memory zone)的名称和大小,该共享内存用于保存缓存项目的元数据:
http {
...
proxy_cache_path /data/nginx/cache keys_zone=one:10m;
}
然后,想为哪些 context 来缓存服务器的响应,就在其中使用 proxy_cache 指令,用来指定内存区的名称,即 proxy_cache_path
指令中的 keys_zone
参数中的名称,此处为 one:
http {
...
proxy_cache_path /data/nginx/cache keys_zone=one:10m;
server {
proxy_cache one;
location / {
proxy_pass http://localhost:8000;
}
}
}
注意,由 keys_zone 参数指定的大小,不会限制被缓存下来的响应数据的总量。被缓存的响应和其元数据的副本一同保存在文件系统中特定的文件中,若想限制被缓存的响应数据的总量,可以在 proxy_cache_path 指令中使用 max_size 参数。
nginx 缓存所涉及的进程
优化缓存层次结果
proxy_cache_path /data/to_cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m;