[Nginx - 경우에 따라 inactive time을 바꾸기]
2011. 03. 24. 임광일

* proxy_cache_path는 http Context에서만 수정 가능함

* set $abc 1m 와 같은 변서 세팅은 http Context에서 사용 안됨

* 또한 inactive option은 변수 처리 안됨
  ex) /cache levels=2:2:2 keys_zone=DELL:10m inactive=$abc max_size=1g; <= 에러

* proxy_cache_valid는 inactive option에 적용 순위 밀림
  실제 의미 없어 보임

* 그 외 여러가지 if문이나 변수 처리로 해보려했으나 모두 안됨

* proxy_cache_path는 PATH가 UNIQUE 해야함
  그렇지 않으면 후순위로 정의한 경우에는 DEFAULT 값이 먹음
  ex) proxy_cache_path        /cache levels=2:2:2 keys_zone=DELL1:10m inactive=1m max_size=1g;
      proxy_cache_path        /cache levels=2:2:2 keys_zone=DELL2:10m inactive=2m max_size=1g;
      와 같이 적용 했을 경우 DELL1 사용에서는 inactive=1m 가 적용 되었는데
                             DELL2 사용에서는 inactive=10m 이 적용 됨

* 그런데 캐싱 데이터는 공유 해야 하기 때문에 ln -s /cache1 /cache2 와 같은 형태로 링크 시켜서 사용

* keys_zone이 달라도 proxy_cache_key 값이 같으면 키 값은 동일

* location에 따라 다른 keys_zone을 사용하는 방식을 이용해서 inactive time 다르게 처리
  ex) location /1/ { proxy_cache             DELL1; }
      location /2/ { proxy_cache             DELL2; }

* DELL1은 inactive=1m 이고
  DELL2는 inactive=2m 일때
  DELL1 서치후 DELL2 서치하면 , 파일은 기존 파일로 유지, inactive time 도 1m에서 1m 으로 유지
  DELL2 서치후 DELL1 서치하면 , 파일은 신규 파일로 변경, inactive time 도 2m에서 1m 으로 변경

* 위와 같은 결과로 "HOT ISSUE 검색어 처리" 같은 경우는 cron으로 5m 마다 특정 keys_zone을 만들어서
  캐시를 생성하면 짧은 inactive time 우선 처리 하기 때문에 이상 없음

Posted by 광장군
,