IT ISSUE

Lightsail에서 Expires Headers 설정 방법

itissue 2024. 10. 8. 00:06
반응형

Expires Headers란?

Expires Headers는 HTTP 응답 헤더의 일종으로, 브라우저가 로컬에 캐시된 리소스를 얼마 동안 유지할 수 있는지를 지정합니다. 이 헤더가 설정되면 브라우저는 동일한 리소스를 서버에 다시 요청하는 대신, 로컬 캐시에서 해당 리소스를 가져와 사용할 수 있습니다. 이는 특히 자주 변경되지 않는 리소스(예: 이미지, 스타일시트, 자바스크립트 파일 등)에 대해 페이지 로드 시간을 크게 줄이는 효과가 있습니다. 결과적으로 서버의 부담을 경감시켜 성능을 최적화할 수 있으며, 페이지 로드 시간이 단축됨에 따라 사용자 경험이 향상되고, 이는 SEO에도 긍정적인 영향을 미칩니다.

Lightsail에서 Expires Headers 설정의 중요성

AWS Lightsail을 사용해 웹사이트를 호스팅할 때, Expires Headers를 설정하지 않으면 방문자의 브라우저가 매번 모든 리소스를 서버에서 새로 다운로드하게 됩니다. 이는 사이트의 응답 속도를 느리게 만들며, 트래픽이 많아질수록 서버에 과부하를 초래할 수 있습니다. 사이트 속도가 느려지면 사용자 이탈률이 높아지고, 이는 결과적으로 비즈니스에 부정적인 영향을 미칠 수 있습니다. 또한, 검색 엔진은 빠르고 사용자 친화적인 웹사이트를 선호하므로, Expires Headers를 적절히 설정하여 사이트 성능을 최적화하는 것은 SEO에 있어서도 매우 중요한 요소입니다.

Lightsail에서 Expires Headers 설정 방법

Lightsail에서 Expires Headers를 설정하는 방법은 주로 사용하는 웹 서버(Apache 또는 Nginx)에 따라 다릅니다. 각각의 서버에서 Expires Headers를 설정하는 방법을 단계별로 알아보겠습니다.

Apache에서 Expires Headers 설정하기

  1. Apache 구성 파일 수정
    • 먼저, SSH를 통해 Lightsail 인스턴스에 접속합니다. 접속 후 /etc/httpd/conf/httpd.conf 파일이나, VirtualHost 설정 파일을 엽니다. 이 파일은 서버의 설정을 정의하는 곳으로, 여기에 Expires Headers 설정을 추가할 수 있습니다.
  2. mod_expires 모듈 활성화
    • Apache 서버에서 Expires Headers를 설정하기 위해서는 mod_expires 모듈이 필요합니다. 이 모듈은 Apache에 포함되어 있으며, 기본적으로 비활성화되어 있을 수 있습니다. 모듈이 활성화되어 있는지 확인하고, 활성화되어 있지 않다면 다음 명령어를 사용해 활성화합니다.
    • sudo a2enmod expires
  3. httpd.conf 파일 수정
    • mod_expires가 활성화된 후, 아래와 같은 설정을 추가하여 Expires Headers를 정의합니다. 이는 특정 파일 유형별로 캐싱 기간을 설정하는 것으로, 이미지 파일은 1년, CSS와 자바스크립트 파일은 1개월 등으로 설정할 수 있습니다.이 설정은 각 리소스 유형에 대해 명확한 캐싱 정책을 정의합니다. 예를 들어, 이미지 파일은 자주 변경되지 않으므로 오랜 기간(1년) 캐싱하도록 설정하는 것이 일반적입니다. 반면, HTML 파일은 상대적으로 자주 변경될 수 있으므로 캐싱 기간을 짧게(1일) 설정합니다.
    • <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 1 month" ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType text/css "access plus 1 month" ExpiresByType text/javascript "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" ExpiresByType application/pdf "access plus 1 month" ExpiresByType text/html "access plus 1 day" </IfModule>
  4. Apache 재시작
    • 설정이 완료되었으면 변경 사항을 적용하기 위해 Apache 서버를 재시작해야 합니다. 다음 명령어를 사용하여 Apache를 재시작합니다.이 명령어는 서버를 중단하고 다시 시작하여 새로운 설정이 적용되도록 합니다. 이 과정에서 서버가 잠시 중단될 수 있으니, 서비스 가동 중에 이 작업을 수행하는 경우 신중히 계획해야 합니다.
    • sudo systemctl restart httpd

Nginx에서 Expires Headers 설정하기

  1. Nginx 구성 파일 수정
    • Nginx를 사용하는 경우에도 먼저 SSH를 통해 Lightsail 인스턴스에 접속합니다. 접속 후 /etc/nginx/nginx.conf 파일이나 VirtualHost 설정 파일을 엽니다. 이 파일에서 서버 블록 내에 Expires Headers 설정을 추가할 수 있습니다.
  2. Expires 헤더 설정 추가
    • 아래와 같은 설정을 Nginx의 server 블록 내에 추가하여 Expires Headers를 정의합니다. 이 설정은 특정 파일 확장자에 대해 캐싱 기간을 설정합니다.이 설정에서는 주로 이미지 파일과 CSS, JS 파일에 대해 1년의 캐싱 기간을 설정하고, HTML 파일에 대해서는 1일의 캐싱 기간을 설정합니다. add_header 지시문을 사용하여 Cache-Control 헤더를 추가하면 브라우저가 캐시된 리소스를 어떻게 처리할지에 대한 추가 지침을 제공할 수 있습니다.
    • location ~* \.(jpg|jpeg|gif|png|css|js|ico|pdf)$ { expires 1y; add_header Cache-Control "public, no-transform"; } location ~* \.(html|htm)$ { expires 1d; add_header Cache-Control "public, no-transform"; }
  3. Nginx 재시작
    • 설정이 완료되면 변경 사항을 적용하기 위해 Nginx 서버를 재시작합니다. 다음 명령어를 사용하여 Nginx를 재시작합니다.Nginx 서버를 재시작하면 새롭게 정의된 Expires Headers 설정이 적용됩니다. 설정 적용 후에는 사이트의 리소스가 올바르게 캐싱되는지 확인하는 것이 좋습니다.
    • sudo systemctl restart nginx

Expires Headers 설정 확인 방법

설정을 완료한 후, 브라우저 개발자 도구나 curl 명령어를 사용하여 Expires Headers가 올바르게 적용되었는지 확인할 수 있습니다. 이러한 검증 과정을 통해 설정이 정확히 적용되었음을 확인하고, 필요 시 추가적인 조정을 할 수 있습니다.

  • 브라우저 개발자 도구 사용
    • F12 키를 눌러 브라우저의 개발자 도구를 열고, 네트워크 탭에서 각 리소스의 응답 헤더를 확인합니다. 여기서 Expires Headers가 제대로 설정되어 있는지 확인할 수 있습니다. 각 리소스의 요청을 선택하면 해당 응답 헤더가 표시되며, 여기서 설정된 Expires 날짜와 Cache-Control 지시문 등을 확인할 수 있습니다.
  • curl 명령어 사용
    • 아래와 같은 명령어를 사용하여 특정 리소스의 헤더 정보를 확인할 수 있습니다.이 명령어는 지정한 URL의 HTTP 헤더 정보를 출력합니다. 출력된 헤더 정보에서 Expires Headers와 Cache-Control 헤더가 올바르게 설정되었는지 확인합니다. 만약 기대한 대로 설정되지 않았다면, 구성 파일을 다시 확인하고 필요 시 수정한 후 서버를 재시작하여 다시 검증합니다.
    • curl -I https://yourdomain.com/sample.jpg

최적화된 Expires Headers 설정을 위한 팁

Expires Headers를 설정할 때는 각 리소스의 특성과 사용 빈도에 따라 캐시 기간을 달리 설정하는 것이 중요합니다. 리소스별로 적절한 캐시 기간을 설정함으로써 사용자 경험을 최적화하고 서버 로드를 최소화할 수 있습니다.

  • 리소스별 캐시 기간 설정: 이미지, CSS, JS 파일은 자주 변경되지 않으므로 오랜 기간 캐싱하는 것이 바람직합니다. 반면, HTML 파일은 자주 업데이트될 수 있으므로 짧은 캐싱 기간을 설정하는 것이 좋습니다. 이와 같은 설정은 페이지 로드 속도를 최적화하고, 서버 부하를 줄이는 데 도움이 됩니다.
  • 리소스 변경 시 주의: 캐시된 리소스가 변경될 때 사용자가 최신 버전을 받지 못하는 문제를 방지하기 위해, 파일 이름에 버전 정보를 포함하거나 쿼리 스트링을 사용하여 캐시를 무효화할 수 있습니다. 예를 들어, style.css 대신 style.v2.css 또는 style.css?v=2와 같이 파일 이름을 변경하거나 쿼리 스트링을 추가하여 브라우저가 최신 버전을 인식하도록 할 수 있습니다.
  • 서버 로드 분산: Expires Headers를 통해 캐싱을
  • 효율적으로 관리하면 서버로의 요청이 줄어들어 서버 부하가 분산되고, 이는 전체 서버 성능을 향상시키는 데 도움이 됩니다. 특히 트래픽이 많은 웹사이트의 경우, 이러한 캐싱 전략을 통해 서버의 응답 속도를 크게 개선할 수 있습니다.

결론

AWS Lightsail에서 Expires Headers를 설정하는 것은 웹사이트의 속도와 성능을 향상시키는 데 있어 중요한 단계입니다. Apache와 Nginx 서버에 대한 올바른 설정과 적용 방법을 잘 이해하고 활용하면, 웹사이트의 사용자 경험을 크게 개선할 수 있으며, SEO 최적화에도 긍정적인 영향을 줄 수 있습니다. 이 가이드를 참고하여, Expires Headers 설정을 완벽하게 수행하고, 웹사이트 성능을 최대한으로 끌어올려 보세요.

반응형