请叫我阿武_Richer

不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂; ---共同学习; 积累学习!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Nginx缓存服务

Posted on 2019-06-04 16:51  请叫我阿武_Richer  阅读(160)  评论(0)    收藏  举报

Nginx 缓存服务  

  nginx缓存服务器的配置主要是通过proxy_cache相关命令来实现的

    也可以设置不同的location来应对,不过Nginx也有相关的参数:proxy_no_cache; 详细使用参数参考以下案例:

  

    配置位置:

   http {

    ......

    proxy_cache_path /data/ngx_cache  levels=1:2  keys_zone=whsir_com:10m  max_size=10g  inactive=60m  use_temp_path=off;
    ......
    server {
        listen 8080;
        server_name 127.0.0.1
        root /home/;
        if ($request_uri ~ ^/(login|register|password|search)){
          set $cookie_user 1              #符合要求的页面 设置为1
        }
        if ($request_uri ~ ^/(login|search)){
          set $nocache 1;
        }
        
        location / {
          proxy_cache whsir_com;    #代表开启这个缓存
          proxy_cache_valid  200 302 304 60m;  
          proxy_cache_key  $host $request_uri $cookie_user         
              proxy_set_header Host $host;
          proxy_set_header X-Forwarded-For $remote_addr;
          proxy_pass http://127.0.0.1:8080;
          proxy_no_cache: $cookie_user  $arg_nocache $arg_comment       #当变量 $cookie_user为1 的时候不缓存
          expires 3d;
    }
 
    参数配置解释:
      http内部配置参数
        proxy_cache_path:定义缓存存储位置
        levels=1:2:设置缓存目录深度,最多能创建3层。
        keys_zone=my_cache:10m:定义缓存区域名称和内存缓存空间大小。名字为my_cache  缓存空间为10M   此名字用户后面开启代理缓存  proxy_cache使用 代表开启缓存
              在共享内存中设置一块存储区域来存放缓存的key和metadata(类似使用次数),这样nginx可以快速判断一个request是否命中或者未命中缓存,
              1m可以存储8000个key,10m可以存储80000个key
        max_size=10g:磁盘缓存空间最大使用值,达到配额后删除最少使用的缓存文件。
        inactive=60m:设置缓存时间,60分钟内没有被访问过就删除。inactive默认是10分钟。
                  需要注意的是,inactive和expired配置项的含义是不同的,expired只是缓存过期,但不会被删除,inactive是删除指定时间内未被访问的缓存文件
        use_temp_path=off:不使用temp_path指定的临时存储路径,直接将缓存文件写入指定的cache文件中,建议为off,避免文件在不同文件系统中不必要的拷贝
        如果使用 
          注意:缓存目录/proxy_cache/proxy_temp一定要在同一个分区下,并且权限一定要和nginx程序权限一致(即要有写入权限,否则不能生产缓存文件)!
 
       server内部配置参数:
        
        proxy_cache my_cache:缓存区域名称,要和keys_zone定义的名称一致;如果proxy_cache off表示关闭掉缓存
        proxy_cache_valid 200 302 304 60m:设置状态码为200 302 304过期时间为60分钟
        proxy_cache_key $host$request_uri $cookie_user:设置缓存的key,这里是以域名、URI、用户cookie,根据key值哈希存储缓存内容到二级缓存目录内
        expires 3d:缓存时间3天
        proxy_no_cache: $cookie_user 当$cookie_user为1 的时候不缓存

        

      
    参数配置完成后进行测试配置文件
      nginx -t -c /etc/nginx/nginx.conf
    测试完成成功时;进行加载配置
      nginx -s reload -c /etc/nginx/nginx.conf