개발
nginx 캐싱 설정 (Cache-Control)
by
앞전의 이야기랑 연계되는 이야기이긴한데,
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일로 설정했을때 페이지스피드에서 뜨는 캐싱 리스트7일은 너무짧아서 페이지스피드 경고에 뜨긴하는데, 30일정도로 늘려봐야겠다.
#문제해결 #Nginx #Ubuntu
0
개의 댓글