[Nginx] 설정 Cache 기능 정리.
- [Nginx] cache 사용법
- [Nginx] cache control
- [Nginx] cache - url 에서 특정 parameter 제거하여 캐싱하는 방법.
[Nginx] cache 사용법
* 빠른 예제
proxy_cache_path /etc/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60s use_temp_path=off;
upstream myupstream {
server 127.0.0.1:8080 max_conns=50;
}
server {
listen 8000;
#remove GET parameters - sessionid
if ($args~(.*) sessionid = [^&]*(.*)) {
set $args $1$2;
}
#remove GET parameters - adid
if ($args~(.*) adid = [^&]*(.*)) {
set $args $1$2;
}
location / {
proxy_cache my_cache;
proxy_cache_methods GET HEAD POST;
proxy_cache_key "$scheme$request_method$host$uri$is_args$args";
proxy_cache_bypass $cookie_nocache $arg_nocache $http_pragma;
#proxy_cache_lock on;
#proxy_cache_valid 200 302 10m;
#proxy_cache_valid 404 1m;
#add_header X-Cache-Status $upstream_cache_status;
...
proxy_pass http: //myupstream;
}
}
- /path/to/cache ==> 캐시 내용이 local disk 에 저장될 위치
- levels=1:2 ==> directory depth 와 사용할 name 길이.
- ex ) /data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
- keys_zone ==> 캐시 키로 사용될 이름과 크기. 1MB 는 약 8천개의 이름 저장. 10MB면 8만개.
- max_size ==> 캐시 파일 크기의 maximum. size 가 over 되면 가장 오래전에 사용한 데이터 부터 삭제한다.
- inactive ==> access 되지 않았을 경우 얼마 뒤에 삭제 할 것인가.
- use_temp_path ==> 설정된 path 외에 임시 저장 폴더를 따로 사용할 것인가? 따로 설정하지 않는 것이 좋다.
- proxy_cache my_cache ==> 캐시로 사용할 메모리 zone 이름.
- proxy_cache_methods ==> request method를 정의한다. default : GET, HEAD
- proxy_cache_key ==> 캐시 할 때 사용할 이름.
- proxy_cache_bypass ==> 예를 들어 "http://www.example.com/?nocache=true" 이러한 요청이 왔을 때 캐싱되지 않은 response 를 보낸다. 이 설정이 없다면 nocache 아규먼트는 동작하지 않는다. http_pragma==> 헤더 Pragma:no-cache
- proxy_cache_lock ==> 활성화 시키면 한 번에 단 하나의 요청만 proxy server로 전달되어 proxy_cache_key 에 따라 캐싱된 데이터로 사용합니다. 다른 request 들은 캐싱된 데이터를 사용하거나 proxy_cache_lock_timeout의 설정에 따라 proxy server로 전달 될 수 있습니다.
- proxy_cache_valid ==> 기본적으로 캐싱할 response code 와 시간을 정의한다.
- add_header X-Cache-Status $upstream_cache_status ==> 캐싱 상태 리턴. MISS:없음, HIT:캐시 사용, EXPIRED
[Nginx] cache control
- 두 가지 캐싱 옵션이 있다.
- proxy_cache_valid 200 302 10m; ==> 기본적으로 캐싱할 response code를 정의한다.
- response 헤더에 Cache-Control:max-age=120 라고 설정하면 120초 뒤에 삭제한다. proxy_cache_valid 보다 우선 순위가 높다.
[Nginx] cache - url 에서 특정 parameter 제거하여 캐싱하는 방법.
- $args 에 있는 parameters 를 정규식으로 제거하여 proxy_cache_key 에서 사용한다.
server{
...
set $c_uri $args;
# remove GET parameters - sessionid
if ($c_uri ~ (.*)sessionid=[^&]*(.*)) {
set $c_uri $1$2;
}
if ($c_uri ~ (.*)adid=[^&]*(.*)) {
set $c_uri $1$2;
}
location / {
...
proxy_cache_key "$scheme$request_method$host$uri$is_args$c_uri";
...
}
- 참조 링크 -
'환경' 카테고리의 다른 글
[NGINX] 에러 - [error] 76899#0: *5007 upstream sent too big header while reading response header from upstream (13) | 2019.01.11 |
---|---|
[Nginx] 설정 log (12) | 2019.01.09 |
[NGINX] 컴파일 설치 - download 와 build script (13) | 2019.01.09 |
docker compose 사용법 간단 정리. (13) | 2018.02.23 |
Jenkins 배포시 broken pipe 문제 (13) | 2016.12.15 |
댓글