이 글은 2년 이상 지난 이야기에요. 읽으실때 참고!
개발
서버 개발 일지
Nginx 캐시 설정법
455 views as of February 11, 2020.

Nginx 에서 캐시 설정을 하는 방법에 대한 기록입니다.

캐시 서버를 별도로 두는 방법도 있고 캐싱 방법이야 무궁무진한데, 일반적으로는 클라이언트의 컴퓨터에 다운받게하고 웹 서버에서 정보를 풀링할동안 띄워주는 역할을 하는 그 캐시를 설정하는 방법을 알아보았다.

 

일반적으로 모든 웹 페이지 소스는 클라이언트에 다운되어 랜더링 되는데, 이 과정에서 Cache TTL(생존주기)가 대부분 미정으로 되어있다. 이런 페이지는 브라우저나 환경별로 매번 새 정보를 요청할때가 있거니와 자체적인 TTL 기준으로 사용되어지기도 한다.

보통 그래서 html 메타태그에 Cache-Control 이란 설정으로 페이지별로 캐싱정도를 관리하기도 하지만, 여기서는 Nginx가 모든 리소스 요청에 대해 캐싱 기준을 설정하는 그런 방법에 대해 기술한다.

 

1
2
$ sudo nano /etc/nginx/sites-available/default
 
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
...
 
server {
        ...
 
        # 로컬 설정, 웹페이지, api 요청등은 캐싱하지 않고 매번 새로운 자료로 제공한다.
        location ~* \.(?:manifest|html?|php?|xml|json)$ {
                expires -1;
        }
 
        # 홈페이지를 구성하는 스타일, 스크립트는 1달 정도 캐싱한 후 새로운 정보를 제공한다.
        location ~* \.(?:css|js)$ {
                expires 1M;
                access_log off;
                add_header Cache-Control "public";
        }
 
        # 홈페이지를 구성하는 이미지등의 리소스는 변화가 거의 없으므로 한 번 다운로드하면 3달 정도 캐싱한다.
        location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
                expires 3M;
                access_log off;
                add_header Cache-Control "public";
        }
}
cs

 

캐싱 기준은 서버마다 다르겠지만 본인의 경우에는 -1, 1M, 3M으로 설정했다. 사실 이미지나 영상 같은 이름의 리소스가 바뀌는 경우는 거의 없다시피 하므로 1y같이 년단위로 지정해도 상관이 없을것이다.

 

×