개발
nginx 캐싱 설정 (Cache-Control)
앞전의 이야기랑 연계되는 이야기이긴한데,
S3서버를 통해서 제공되는 파일은 그쪽에서 캐싱처리를 해도되지만, 웹서버에 올려서 호스팅되는 파일은 웹서버쪽에서 캐싱처리를 해야한다.
더군다나 나는 Docker 환경에 Proxy 방식으로 웹서버를 운용중이라 적용하는데 좀 버거운 과정이 있었다.
쉽게 상황을 풀어보면 도커에서 여러 서버 컨테이너를 운용하기위해서 나는 외부 접속을 8000포트의 프록시 서버가 관리하고 이 프록시 서버에서 요청된 도메인에 해당하는 서버 스트림으로 연결을 넘겨주게된다.
여기서 해당 서버에 호스팅된 파일의 캐시관리는 프록시 서버가 하는게 아니라 해당 서버 블록에서 하게된다.
난 이것도모르고 계속 프록시 서버 설정에다가 캐시를 적용하고있었다...
location ^~ /css/ {
expires 1y;
add_header Cache-Control "public, max-age=31536000, immutable";
try_files $uri =404;
access_log off;
log_not_found off;
}
location ^~ /js/ {
expires 1y;
add_header Cache-Control "public, max-age=31536000, immutable";
try_files $uri =404;
access_log off;
log_not_found off;
}
location ^~ /fonts/ {
expires 1y;
add_header Cache-Control "public, max-age=31536000, immutable";
try_files $uri =404;
access_log off;
log_not_found off;
}
location ~* \.(?:jpg|jpeg|webp|png|gif|svg|ico)$ {
expires 30d;
add_header Cache-Control "public, max-age=604800";
access_log off;
log_not_found off;
}
# 기존 / 로케이션 블럭위에 캐싱 파트를 배치
location / {
try_files $uri $uri/ /index.php?$query_string;
}
Copy
그래서 해당 웹서버가 작동되는 nginx/default.conf 파일을 열어 기존 / 로케이션 블록위에 캐싱 설정값을 적용하면 정상적으로 작동하는 것을 확인할 수 있다.

7일은 너무짧아서 페이지스피드 경고에 뜨긴하는데, 30일정도로 늘려봐야겠다.
#문제해결 #Nginx #Ubuntu
0
개의 댓글
개발 카테고리의 다른 글

04/21
AWS S3 캐싱 정책 일괄변경 작업 + Laravel 옵션
나는 AWS S3를 통해서 게시글 본문 이미지를 호스팅 하고 있다.이 S3를 최대한 잘 사용해보기 위해서 그위에 Cloud Front를 얹어서 CDN 처럼 지역 배포하는 기능을 구현해놨는데, 이게 캐싱설정이 제대로 먹지 않는다는걸 알게되었다. 무슨말이냐면 아무리 CloudFront에 캐시정책이 제대로 설정되어있다하더라고 S3에 설정...
04/16
JSON 테스트 데이터
우리가 급하게 JSON 형식의 데이터가 필요할때 그걸 일일히 만들고있기에는 JSON 데이터구조가 나름 복잡한 구조라고 볼 수 있다.그렇기 때문에 보통 임의의 배열을 만들고 JSON 관련 인코딩/디코딩 함수를 통해 일련의 정보를 얻는 방식을 취한다. 하지만 정말 급하게 JSON 형태의 데이터가 필요할 경우 로렌입숨처럼 쉽게...

04/16
온라인 UUID 생성기 제작 및 비화
가끔 업무를 하다가 대량의 uuid를 만들어야 하는 경우가 발생한다.나같은 경우는 게시글 데이터 이전을 할때 새로운 게시글 구조에서는 기존에 사용하지 않는 uuid 방식으로 고유값을 이용하는데, 보통 이전 db구조에서 그런걸 쓰지않다보니 개수에 맞게 uuid를 만들어야 하는 경우가 종종 있다. 그럴때 일반적으로 쿼리문...