오리진의 HTTP 4xx 및 5xx 상태 코드를 CloudFront 처리하고 캐시하는 방법 - 아마존 CloudFront

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

오리진의 HTTP 4xx 및 5xx 상태 코드를 CloudFront 처리하고 캐시하는 방법

Amazon S3 버킷 또는 사용자 지정 오리진 서버에서 객체를 CloudFront 요청할 때 오리진에서 HTTP 4xx 또는 5xx 상태 코드를 반환하는 경우가 있는데, 이는 오류가 발생했음을 나타냅니다. CloudFront 동작은 다음에 따라 달라집니다.

  • 사용자 지정 오류 페이지를 구성했는지 여부

  • 오리진의 오류 응답을 CloudFront 캐시할 기간 (오류 캐싱 최소 TTL) 을 구성했는지 여부.

  • 상태 코드

  • 5xx 상태 코드의 경우 요청된 객체가 현재 엣지 캐시에 있는지 여부입니다. CloudFront

  • 일부 4xx 상태 코드의 경우 오리진에서 Cache-Control max-age 또는 Cache-Control s-maxage 헤더를 반환하는지 여부

CloudFront 및 요청에 대한 응답을 항상 캐시합니다. GET HEAD OPTIONS요청에 대한 응답을 CloudFront 캐시하도록 구성할 수도 있습니다. CloudFront 다른 방법을 사용하는 요청에 대한 응답은 캐시하지 않습니다.

오리진이 응답하지 않는 경우 오리진에 대한 CloudFront 요청 제한 시간이 초과되며 이는 오리진에서 발생한 HTTP 5xx 오류로 간주됩니다. 이는 오리진이 해당 오류로 응답하지 않았더라도 마찬가지입니다. 이 시나리오에서는 캐시된 CloudFront 콘텐츠를 계속 제공합니다. 자세한 설명은 오리진 사용 불가 섹션을 참조하세요.

로깅을 활성화한 경우 HTTP 상태 코드에 관계없이 결과를 로그에 CloudFront 기록합니다.

에서 CloudFront 반환된 오류 메시지와 관련된 기능 및 옵션에 대한 자세한 내용은 다음을 참조하십시오.

사용자 지정 오류 페이지를 구성한 경우 오류를 CloudFront 처리하는 방법

사용자 지정 오류 페이지를 구성한 경우 CloudFront 동작은 요청된 객체가 에지 캐시에 있는지 여부에 따라 달라집니다.

요청된 객체가 엣지 캐시에 없는 경우

CloudFront 다음 조건이 모두 충족될 때 오리진에서 요청된 객체를 계속 가져오려고 시도합니다.

  • 최종 사용자가 객체를 요청하는 경우

  • 객체가 엣지 캐시에 있지 않는 경우

  • 오리진이 HTTP 4xx 또는 5xx 상태 코드를 반환하며 다음 중 하나가 true인 경우

CloudFront 다음을 수행합니다.

  1. 뷰어 요청을 받은 CloudFront 엣지 캐시에서 배포 구성을 CloudFront 확인하고 오리진에서 반환한 상태 코드에 해당하는 사용자 지정 오류 페이지의 경로를 가져옵니다.

  2. CloudFront 사용자 지정 오류 페이지의 경로와 일치하는 경로 패턴을 가진 배포의 첫 번째 캐시 동작을 찾습니다.

  3. CloudFront 엣지 로케이션은 사용자 지정 오류 페이지에 대한 요청을 캐시 동작에 지정된 오리진으로 보냅니다.

  4. 오리진에서는 엣지 로케이션에 사용자 지정 오류 페이지를 반환합니다.

  5. CloudFront 요청한 뷰어에게 사용자 지정 오류 페이지를 반환하고 다음과 같은 최대값에 대해 사용자 지정 오류 페이지도 캐시합니다.

    • 오류 캐싱 최소 TTL(기본값: 10초)에 의해 지정된 시간

    • 첫 번째 요청이 오류를 생성할 때 오리진에서 반환된 Cache-Control max-age 헤더 또는 Cache-Control s-maxage 헤더에 의해 지정된 시간

  6. 캐싱 시간 (5단계에서 결정) 이 경과하면 오리진에 다른 요청을 전달하여 요청된 객체를 다시 CloudFront 가져오려고 시도합니다. CloudFront 오류 캐싱 최소 TTL에 지정된 간격으로 계속 재시도합니다.

요청된 객체가 엣지 캐시에 있는 경우

CloudFront 다음 조건을 모두 충족할 경우 현재 엣지 캐시에 있는 객체를 계속 제공합니다.

  • 뷰어가 객체를 요청하는 경우

  • 객체가 엣지 캐시에 있지만 만료된 경우

  • 오리진이 304 상태 코드(수정되지 않음) 또는 객체의 업데이트된 버전을 반환하는 대신에 HTTP 5xx 상태 코드를 반환하는 경우

CloudFront 다음을 수행합니다.

  1. 오리진에서 5xx 상태 코드를 반환하는 경우, 만료되었더라도 객체를 CloudFront 제공합니다. 오류 캐싱 최소 TTL 기간 동안에는 엣지 캐시에서 객체를 제공하여 시청자 요청에 CloudFront 계속 응답합니다.

    오리진이 4xx 상태 코드를 반환할 경우 CloudFront 는 최종 사용자에게 요청된 객체가 아니라 상태 코드를 반환합니다.

  2. 오류 캐싱 최소 TTL이 경과한 후에는 오리진에 다른 요청을 전달하여 요청된 객체를 다시 CloudFront 가져오려고 시도합니다. 객체를 자주 요청하지 않는 경우 원본 서버가 여전히 5xx 응답을 반환하는 동안 엣지 캐시에서 객체가 CloudFront 제거될 수 있습니다. 객체가 CloudFront 엣지 캐시에 머무르는 기간에 대한 자세한 내용은 을 참조하십시오. 콘텐츠가 캐시에 유지되는 기간(만료) 관리

사용자 지정 오류 페이지를 구성하지 않은 경우의 오류 CloudFront 처리 방법

사용자 지정 오류 페이지를 구성하지 않은 경우 CloudFront 동작은 요청된 객체가 에지 캐시에 있는지 여부에 따라 달라집니다.

요청된 객체가 엣지 캐시에 없는 경우

CloudFront 다음 조건이 모두 충족될 때 오리진에서 요청된 객체를 계속 가져오려고 시도합니다.

  • 최종 사용자가 객체를 요청하는 경우

  • 객체가 엣지 캐시에 있지 않는 경우

  • 오리진이 HTTP 4xx 또는 5xx 상태 코드를 반환하며 다음 중 하나가 true인 경우

CloudFront 다음을 수행합니다.

  1. CloudFront 뷰어에게 4xx 또는 5xx 상태 코드를 반환하고, 요청을 받은 에지 캐시에 상태 코드를 캐시하여 최대 다음 값까지 저장합니다.

    • 오류 캐싱 최소 TTL(기본값: 10초)에 의해 지정된 시간

    • 첫 번째 요청이 오류를 생성할 때 오리진에서 반환된 Cache-Control max-age 헤더 또는 Cache-Control s-maxage 헤더에 의해 지정된 시간

  2. 캐싱 시간 (1단계에서 결정) 동안 동일한 객체에 대한 후속 뷰어 요청에 캐시된 4xx 또는 5xx 상태 코드를 사용하여 CloudFront 응답합니다.

  3. 캐싱 시간 (1단계에서 결정) 이 경과하면 오리진에 다른 요청을 전달하여 요청된 객체를 다시 CloudFront 가져오려고 시도합니다. CloudFront 오류 캐싱 최소 TTL에 지정된 간격으로 계속 재시도합니다.

요청된 객체가 엣지 캐시에 있는 경우

CloudFront 다음 조건을 모두 충족할 경우 현재 엣지 캐시에 있는 객체를 계속 제공합니다.

  • 뷰어가 객체를 요청하는 경우

  • 객체가 엣지 캐시에 있지만 만료된 경우

  • 오리진이 304 상태 코드(수정되지 않음) 또는 객체의 업데이트된 버전을 반환하는 대신에 HTTP 5xx 상태 코드를 반환하는 경우

CloudFront 다음을 수행합니다.

  1. 오리진에서 5xx 오류 코드를 반환하는 경우, 오브젝트가 만료되었더라도 해당 객체를 CloudFront 제공합니다. 오류 캐싱 최소 TTL (기본값 10초) 동안 는 에지 캐시에서 객체를 제공하여 최종 사용자의 요청에 CloudFront 계속 응답합니다.

    오리진이 4xx 상태 코드를 반환할 경우 CloudFront 는 최종 사용자에게 요청된 객체가 아니라 상태 코드를 반환합니다.

  2. 오류 캐싱 최소 TTL이 경과한 후에는 오리진에 다른 요청을 전달하여 요청된 객체를 다시 가져오십시오. CloudFront 객체를 자주 요청하지 않는 경우 원본 서버가 여전히 5xx 응답을 반환하는 동안 엣지 캐시에서 객체가 CloudFront 제거될 수 있습니다. 객체가 CloudFront 엣지 캐시에 머무르는 기간에 대한 자세한 내용은 을 참조하십시오. 콘텐츠가 캐시에 유지되는 기간(만료) 관리

캐시하는 HTTP 4xx 및 5xx 상태 코드 CloudFront

CloudFront 반환되는 특정 상태 코드와 오리진이 응답에서 특정 헤더를 반환하는지 여부에 따라 오리진에서 반환된 HTTP 4xx 및 5xx 상태 코드를 캐시합니다.

항상 캐시되는 HTTP 4xx 및 5xx 상태 코드 CloudFront

CloudFront 오리진에서 반환한 다음과 같은 HTTP 4xx 및 5xx 상태 코드를 항상 캐시합니다. HTTP 상태 코드에 대한 사용자 지정 오류 페이지를 구성한 경우 사용자 지정 오류 페이지를 CloudFront 캐시합니다.

404

찾을 수 없음

414

요청-URI가 너무 큼

500

내부 서버 오류

501

구현되지 않음

502

잘못된 게이트웨이

503

서비스 사용 불가

504

게이트웨이 시간 초과

헤더를 기반으로 CloudFront 캐시하는 HTTP 4xx 상태 코드 Cache-Control

CloudFront 오리진이 또는 헤더를 반환하는 경우에만 오리진에서 반환한 다음 HTTP 4xx 상태 코드를 캐시합니다. Cache-Control max-age Cache-Control s-maxage 이러한 HTTP 상태 코드 중 하나에 대해 사용자 지정 오류 페이지를 구성한 후 오리진이 캐시 제어 헤더 중 하나를 반환하는 경우 사용자 지정 오류 페이지를 캐시합니다. CloudFront

400

잘못된 요청

403

금지됨

405

허용되지 않은 메소드

412

사전 조건 실패

415

지원되지 않는 미디어 유형