Nginx 웹 서버 캐싱 설정하기

inhalin·2023년 8월 24일
0

시작하기

  • 설치
sudo apt install nginx -y
  • 실행, 상태 확인, 종료, 재실행
systemctl start nginx # 실행
systemctl status nginx # 상태 확인
systemctl stop nginx # 종료
systemctl restart nginx # 재실행
systemctl reload nginx # 재로드(설정파일 변경시)
  • 설정 파일 오류 확인
nginx -t

# 정상
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

# 오류
nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/default:22
nginx: configuration file /etc/nginx/nginx.conf test failed

캐싱 설정하기

1. 캐시 설정을 위해 디폴트 설정파일을 복사한 커스텀 파일 생성

cd /etc/nginx/sites-available
cp default custom
vi custom
server {
		listen 80 default_server;
		listen [::]:80 default_server;

		root /app/web;

		server_name _;

		location / {
				try_files $uri $uri/ =404
		}

		location /file/ {
				location ~* \.(plist|apk|ipa)$ {
						add_header Cache-Control "no-store";
						etag off; # ETag 사용 안함
				}								
		}
}
  • location 은 중첩해서 사용 가능하다.
    • /file/: /app/web/file 디렉토리 하위에 있는 파일들에 설정 적용
      • ~* 정규 표현식이 일치하고 대소문자 구분없이
      • .(plist|apk|ipa)$ .plist, .apk, .ipa 로 끝나는 파일
    • add_header 로 커스텀한 헤더 설정 가능
    • etag off 추가해서 ETag 사용 안하도록 설정

2. 설정파일을 사용하도록 심링크 추가 & 기존 default 설정파일 심링크 삭제

ln -s /etc/nginx/sites-available/custom /etc/nginx/sites-enabled/
rm /etc/nginx/sites-enabled/default

3. 수정된 내용을 nginx에 반영

nginx -t # 설정 파일 오류 확인
systemctl restart nginx

4. 정상적으로 반영되었는지 확인

curl -I localhost/file/manifest.plist

결과

캐싱 비활성화 적용된 경우

  • Cache-Control: no-store
  • ETag 없음

기본값 그대로 적용된 경우

  • Cache-Control 없음
  • ETag 있음

참고

0개의 댓글