11. Nginx缓存

缓存类型

  1. 浏览器缓存
  2. Nginx代理服务器缓存
  3. 服务器缓存,例如Redis、Memcache等

缓存配置

http://nginx.org/en/docs/http...
upstream backend {
    server x.x.x.x:1023;
    server x.x.x.x:1024;
    server x.x.x.x:1025;
}

#缓存存放的位置是 /data/nginx/cache,目录层级为两层,最多存放10G缓存
#缓存key存放的内存空间是 default_cache ,单个缓存最大为 10m
#自动移除60分钟内没有人访问的缓存
#在将缓存放置到 proxy_cache_path 以前,不使用 use_temp_path

proxy_cache_path /data/nginx/cache levels=1:2 max_size=10g keys_zone=default_cache:10m inactive=60m use_temp_path=off;

server {
    ...
    location / {
        #使用backend负载均衡组
        proxy_pass http://backend;
        #使用 default_cache 缓存
        proxy_cache default_cache;
        #200、304的响应缓存时间为12h
        proxy_cache_valid 200 304 12h;
        #非200、304的响应缓存时间为10m
        proxy_cache_valid any 10m;
        #使用$uri做为缓存key
        proxy_cache_key $uri;
        #对于如下特定状况,继续请求负载均衡组里面的其余服务器
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        #若是请求中含有参数或者为受权请求,则不缓存 
        proxy_no_cache $http_pragma    $http_authorization;
        #向客户端返回一个是否击中缓存的头信息
        add_header Nginx-Cache "$upstream_cache_status";
    }
}

缓存清理

  • rm -rf 缓存目录
  • 使用 ngx_cache_purge 模块清理特定缓存

专题阅读