일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- javascript
- ubuntu
- linux
- it
- elasticsearch
- devops
- java
- db
- IntelliJ
- laravel
- 맛집
- 요리
- Git
- Oracle
- jsp
- ReactJS
- Spring
- php
- MySQL
- Design Patterns
- jenkins
- springboot
- JVM
- redis
- tool
- Web Server
- AWS
- Gradle
- Spring Boot
- Spring Batch
Archives
- Today
- Total
아무거나
리버스 프록시를 활용한 정적 리소스 캐시 본문
반응형
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);
-
반응형
'Infra > Nginx' 카테고리의 다른 글
Ngnix 로드밸런싱 설정 (Nginx의 Upstream 모듈을 통해서 제공) (0) | 2020.05.30 |
---|---|
Sticky Session 관련 로드밸런서 스위칭 문제 (0) | 2020.05.23 |
413 Request Entity Too Large Errors 해결 (0) | 2019.04.05 |
리버스 프록시(reverse proxy)란 (0) | 2019.01.31 |
Nginx 보안 취약점 처리 (0) | 2018.06.17 |
Comments