Content Caching: NGINX Plus 대표 기능
NGINX Plus의 가장 인기 있는 사용 사례 중 하나는 Content Caching 역할입니다. 이는 Local Origin 서버를 가속화하고 콘텐츠 전송 네트워크(CDN)를 위한 Edge 서버를 생성하는 데 사용됩니다. 캐싱은 Content Caching 가능성과 사용자 트래픽 프로필에 따라 Origin 서버의 부하를 크게 줄일 수 있습니다.
NGINX Plus는 상위 HTTP 서버에서 검색한 콘텐츠와 FastCGI, SCGI, uwsgi 서비스가 반환한 응답을 캐시할 수 있습니다.
NGINX Plus는 캐시 정리 지원 및 실시간 활동 모니터링 대시보드에서 캐시 상태의 더 풍부한 시각화를 추가함으로써 NGINX 오픈소스의 Content Caching 능력을 확장합니다.

목차
1. Content Caching 을 사용하는 이유는 무엇인가요?
2. NGINX Plus를 사용한 Content Caching
3. Cache 계측
4. 오래된 Content 관리
5. Content Caching 을 통한 Cache 삭제
6. Content Caching 에 대한 추가 정보
1. Content Caching 을 사용하는 이유는 무엇인가요?
Content Caching은 웹 페이지의 로딩 시간을 개선하고, 상위 서버의 부하를 줄이며, Origin 서버가 실패한 경우 캐시된 콘텐츠를 백업으로 사용하여 가용성을 향상시킵니다.
- 향상된 사이트 성능: NGINX Plus는 모든 유형의 캐시된 콘텐츠를 정적 콘텐츠와 동일한 속도로 제공하여 대기 시간을 줄이고 웹사이트의 반응성을 향상시킵니다.
- 용량 증가: NGINX Plus는 Origin 서버에서 반복적인 작업을 처리하여 더 많은 사용자를 서비스하고 더 많은 애플리케이션을 실행하는 데 용량을 확보합니다.
- 더 큰 가용성: NGINX Plus는 Origin 서버가 다운된 경우에도 캐시된 콘텐츠(비록 오래된 것이라도)를 제공하여 사용자를 치명적인 오류로부터 보호합니다.
NGINX Plus와 NGINX는 웹 인프라에 대한 통합 솔루션을 제공하여, Origin 콘텐츠를 위한 HTTP 서버, FastCGI 및 기타 프로토콜을 위한 애플리케이션 Gateway, 상위 서버를 위한 HTTP Proxy를 결합합니다. NGINX Plus는 엔터프라이즈 등급의 애플리케이션 로드 밸런싱을 추가하여 웹 인프라의 Frontend 로드 밸런서로 통합합니다.
2. NGINX Plus를 사용한 Content Caching
캐시된 콘텐츠는 디스크에 있는 지속적인 캐시에 저장되며, NGINX Plus와 NGINX는 이를 Origin 콘텐츠와 동일한 방식으로 제공합니다.
콘텐츠 캐싱을 활성화하려면, 구성에 proxy_cache_path와 proxy_cache 지시문을 포함시키세요.
# Define a content cache location on disk
proxy_cache_path /tmp/cache keys_zone=mycache:10m inactive=60m;
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://localhost:8080;
# reference the cache in a location that uses proxy_pass
proxy_cache mycache;
}
}
기본적으로, NGINX Plus와 NGINX는 Content Caching 에 대해 안전하고 신중한 접근 방식을 취합니다. 그들은 GET 또는 HEAD 요청에 의해 검색된 콘텐츠를 캐시하며, Set-Cookie 응답이 없고, 캐시 시간은 Origin 서버 헤더(X-Accel-Expires, Cache-Control, Expires)에 의해 정의됩니다. NGINX Plus는 RFC 5861에 정의된 Cache-Control 확장을 준수합니다, 이는 stale-while-revalidate와 stale-if-error를 포함합니다.
이러한 각 행동들은 다양한 지시문을 사용하여 확장되고 세밀하게 조정될 수 있습니다. 자세한 소개를 위해서는 NGINX Plus Docs를 참조하십시오.
3. Cache 계측
NGINX Plus의 Live Activity 모니터링 API는 콘텐츠 캐시의 활용도와 효과성을 측정하는 데 사용할 수 있는 다양한 통계를 보고합니다.

4. 오래된 Content 관리
기본적으로, NGINX Plus와 NGINX는 콘텐츠가 유효한 동안 Content Caching 을 제공합니다. 유효성은 구성 가능하거나 Origin 서버에 의해 설정된 Cache-Control Header에 의해 제어될 수 있습니다. 유효 기간이 지나면 Content Caching 은 오래된 것으로 간주되며, 캐시된 콘텐츠가 여전히 Origin 서버에서 찾은 콘텐츠와 동일한지 확인함으로써 재검증 해야 합니다.
오래된 콘텐츠는 클라이언트에 의해 요청되지 않을 수 있으므로, NGINX Plus와 NGINX는 오래된 콘텐츠를 클라이언트에 의해 요청될 때만 재검증합니다. 이는 Background에서 수행될 수 있으며, 즉시 오래된 콘텐츠를 제공함으로써 클라이언트 요청을 방해하거나 지연시키지 않습니다. Origin 서버가 사용 불가능할 때에도 오래된 콘텐츠가 제공되며, 이는 Peak-load 시간이나 Origin 서버의 장기간 중단 시에 높은 가용성을 제공합니다.
NGINX과 NGINX Plus가 오래된 콘텐츠를 제공하는 조건은 지시문을 사용하여 구성되거나 Origin 서버의 Cache-Control Header에 있는 값, 즉 stale-while-revalidate와 stale-if-error를 준수함으로써 설정할 수 있습니다.
5. Content Caching 을 통한 Cache 삭제
Content Caching 의 부작용 중 하나는 Origin 서버에서의 콘텐츠 업데이트가 반드시 즉시 캐시로 변환되지 않는다는 것입니다. 이는 클라이언트가 일정 시간 동안 오래된 콘텐츠를 계속해서 제공받을 수 있음을 의미합니다.
업데이트 작업이 동시에 여러 리소스를 변경하는 경우(예를 들어, CSS 파일과 참조된 이미지를 변경하는 경우), 클라이언트에게 오래된 리소스와 현재 리소스의 혼합이 제공될 수 있으며, 이로 인해 일관성 없는 표현이 될 수 있습니다.
NGINX Plus의 캐시 정리 기능을 사용하면 이 문제를 쉽게 해결할 수 있습니다. proxy_cache_purge 지시문은 구성된 값과 일치하는 항목을 NGINX Plus의 콘텐츠 캐시에서 즉시 제거할 수 있도록 합니다. 이 방법은 주로 사용자 지정 HTTP Header나 메소드를 포함하는 요청에 의해 가장 쉽게 트리거됩니다.
예를 들어, 다음 구성은 PURGE HTTP Method를 사용하는 요청을 식별하고, 일치하는 URL을 삭제합니다.
proxy_cache_path /tmp/cache keys_zone=mycache:10m levels=1:2 inactive=60s;
map $request_method $purge_method {
PURGE 1;
default 0;
}
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://localhost:8002;
proxy_cache mycache;
proxy_cache_purge $purge_method;
}
}
다음 예제와 같은 curl 명령을 사용하는 등의 다양한 도구를 사용하여 삭제 요청을 발행할 수 있습니다.
$ curl -X PURGE -D – "http://www.example.com/*"
HTTP/1.1 204 No Content
Server: nginx/1.5.12
Date: Sat, 03 May 2014 16:33:04 GMT
Connection: keep-alive
예시에서 보여지는 것처럼, URL에 별표(*) 와일드카드를 추가함으로써 공통 URL 줄기를 가진 전체 리소스 세트를 삭제할 수 있습니다.
이렇게 하면 해당 패턴에 일치하는 모든 URL이 캐시에서 제거되어, Origin 서버의 최신 콘텐츠가 즉시 반영될 수 있게 됩니다.
6. Content Caching 에 대한 추가 정보
NGINX Plus는 NGINX의 모든 Caching 기능을 상속받습니다. 자세한 내용은 NGINX Plus Docs를 참조하시기 바랍니다. 이 문서들은 NGINX STORE에서 찾을 수 있으며, Content Caching 설정, 지시문에 대한 설명, Content Caching 과 관련된 다양한 주제를 다룹니다. 이 문서들을 통해 NGINX Plus의 Content Caching 기능에 대해 더 깊게 이해할 수 있을 것입니다.
아래 뉴스레터를 구독하고 NGINX와 NGINX STORE의 최신 정보들을 빠르게 전달 받아보세요.
댓글을 달려면 로그인해야 합니다.