일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Spring Batch
- db
- springboot
- it
- elasticsearch
- javascript
- IntelliJ
- Spring
- AWS
- ubuntu
- redis
- java
- Oracle
- laravel
- linux
- jenkins
- php
- 요리
- ReactJS
- Gradle
- devops
- tool
- Git
- Spring Boot
- jsp
- Web Server
- JVM
- MySQL
- Design Patterns
- 맛집
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