1. 미들웨어이야기/04. Nginx

Nginx Reverse Proxy cache 설정

알 수 없는 사용자 2014. 5. 13. 12:45

Nginx를 Reverse Proxy 웹서버로 사용할때의 캐시 사용방법

http {

    include       mime.types;

    default_type  application/octet-stream;

    proxy_cache_path /nginx/nginx-1.6/cache levels=1:2 key_zone=my-cache:8m max_size=1000m inactive=600m;

    proxy_temp_path /nginx/nginx-1.6/tmp;


    ... 중략


    server {

        listen       80;

        server_name  localhost;


        #charset koi8-r;


        #access_log  logs/host.access.log  main;


        location / {

            root   html;

            index  index.html index.htm;

        }

        location ~ \.jsp$ {

            include proxy.conf;

            proxy_pass  http://127.0.0.1:8080;

            proxy_cache my-cache;

            proxy_cache_valid 200 302 60m; 

            proxy_cache_valid 404 1m;

        }

    }

}


최대 1,000MB의 캐시를 만들어 HTTP 응답코드가 200 또는 302일 경우 60분동안 캐시에 저장을 하고 응답코드가 404인 경우에는 1분동안 캐시에 저장하는 설정입니다.

 

자주쓰는 캐시설정 지시어

 : proxy_cache 지시어

   설명 : 캐시 존을 정의합니다. 캐시존에 부여된 식별자를 이용해 다른지시어에서 사용을 한다.

   syntax : proxy_cache zonename | off;

   default : proxy_cache off;

   사용 예) proxy_cache cache1;    // cache1 이라는 캐시존을 정의

   context : http, server, location

 

 : proxy_cache_path 지시어

   설명 : 캐시파과 매개변수를 저장하기 위한 디렉토리를 지정한다.

   syntax : proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time]

                    [maxsize=size] [loader_files=number] [loader_sleep=time] [loader_threshold=time]

    - level : 하위 디렉토리의 깊이를 나타낸다( 보통 1:2 정도면 충분함 )

    - key_zone : proxy_cache 지시어로 정의한 캐시 존을 이용할 수 있게 하며, size는 해당 캐시존의 크기이다.

    - inactive : 캐시된 응답이 지정한 시간만큼 사용되지 않으면 캐시로부터 제거된다.

    - max_size : 전체 캐시의 최대 크기를 정의한다.

   사용 예) proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=cache1:10m max_size=300M;

   default : 없음

   context : http

 

 : proxy_cache_key 지시어

   설명 : 캐시 항목들을 서로 구분하는 캐시 키(cache key)를 정의한다.

      캐시 키가 $request_uri로 설정되어있으면, request_uri이 같은 모든 요청은 같은 캐시 항목에 대응된다.

   syntax : proxy_cache_key string;

   사용 예) proxy_cache_key "$schema$host$request_uri $cookie_user";

   default : proxy_cache_key $schema$proxy_home$request_uri;

   context : http, server, location

 

 : proxy_cache_bypass 지시어

   설명 : 응답에 캐시를 적용하지 않을 조건을 지정한다.

            문자열 변수가 비어 있지 않거나 "0"이 아니면, 캐시로부터 응답을 가져오지 않는다.

            동일한 지시어로 proxy_no_cache 지시어가 있다.(syntax 동일함)

   syntax : proxy_cache_bypass string ... ;

   default : 없음.

   context : http, server, location

 

 : proxy_cache_method 지시어

   설명 : 캐시가 적용되는 HTTP 메소드를 정의한다.

   syntax : proxy_cache_method GET | HEAD | POST;

   default : proxy_cache_method GET HEAD;   // 기본적으로 GET, HEAD는 포함되며, 해제할 수 없다.

   context : http, server, location

 

 : proxy_cache_min_uses 지시어

   설명 : 요청이 캐시되는 데 필요한 최소 요청 횟수를 정의한다.

   syntax : proxy_cache_min_uses number;

   default : proxy_cache_min_uses 1;   // 기본적으로 한번의 요청만으로도 캐시된다.

                                                   같은 캐시키를 갖는 이후의 요청은 캐시된 응답을 수신하게 된다.

   context : http, server, location

 

 : proxy_cache_valid 지시어

   설명 : 프록시되는 서버(backend)로부터의 응답에 따른 캐시의 유효시간 설정

   syntax : proxy_cache_valid code1 [code2 ...] time;

   사용 예) proxy_cache_valid 404 1m;         // 응답코드 404는 1분 동안 캐시

               proxy_cache_valid 500 502 504 5m;   // 응답코드 500, 502, 504는 5분동안 캐시

               proxy_cache_valid 200 10;          // 응답코드 200은 10분이상 캐시

   default : 없음

   context : http, server, location



by 김현수

 

'1. 미들웨어이야기 > 04. Nginx' 카테고리의 다른 글

Nginx 백엔드 서버 부하분산 설정  (0) 2014.07.28
Nginx 다중 백엔드 설정  (0) 2014.07.28
Nginx JBoss 연동(Reverse Proxy 사용)  (0) 2014.05.07
Nginx 설치 / -configure 옵션  (0) 2014.05.07
Nginx 설치  (0) 2014.04.23