Infra/Nginx
리버스 프록시를 활용한 정적 리소스 캐시
전봉근
2019. 1. 31. 17:42
반응형
Nginx 리버스 프록시를 활용한 정적 리소스 캐시
- 정적 자원(static resource) 캐시
-
proxy.conf 추가
// path: vi /etc/nginx/conf.d/proxy.conf // css, js, gif, png, jpg, jpeg 파일을 전부 캐시한다. (바뀐 파라미터에 따라서 전부 캐시하게 된다.) server { ... location ~* \.(?:css|js|gif|png|jpg|jpeg)$ { proxy_pass http://127.0.0.1:8080; proxy_cache_valid 200 60m; proxy_cache cache_zone; expires 1y; access_log off; add_header X-Proxy-Cache $upstream_cache_status; } ... }
-
nginx.conf 추가
// path: vi /etc/nginx/nginx.conf http { ... # cache storage # proxy_cache_path /var/cache/nginx/ levels=1:2 keys_zone=cache_zone:40m inactive=7d max_size=100m; ... }
-
nginx cache로 저장된 파일 확인
// path: /data/cache/nginx/cache grep -rnw '찾고자하는 디렉토리 위치' -e "찾는 텍스트명"
-
예를 들어 애니메이션 이미지를 캐싱할경우 currentTime으로 호출 파라미터를 지정하여 새로고침 할 때 마다 git파일을 새로 불러오도록 한다.
<img src="/image/bong.gif?v=${currentTime}">
만약 위와 같이 설정하고 캐시를 적용하면 유저가 많은 사이트는 금새 디스크가 꽉 찰 것이다. 그것을 방지하기위하여 기존 날짜형식의 파라미터 말고 범위안의 랜덤숫자를 사용하거나 gif가 캐시를 안타게 설정하는등의 여러 방법을 생각해보면 된다.
// nginx에서 캐시되는 gif는 최대 1000이므로 실제 디스크에서 저장되는 양은 약 30MB정도이므로 1 ~ 1000의 랜덤한 숫자로 파라미터를 할당 // 기존 날짜형식 파라미터 String param = Long.toString(new Date().getTime()); // 랜덤 숫자 파라미터 int param = random.nexInt(1000);
-
반응형