제 Amazon CloudFront 배포에 구성되어 있는 오리진은 가상 호스팅을 사용합니다. 호스트 헤더를 오리진 서버로 전달하도록 배포를 구성하고 싶습니다.
간략한 설명
호스트 헤더를 오리진에 전달하기 위한 배포를 구성하려면 다음 작업 중 하나를 수행하십시오.
- 캐시 정책 및 오리진 요청 정책을 생성합니다.
- 배포의 기존 동작 설정을 편집합니다.
사용자 지정 도메인이 없는 Amazon API Gateway 오리진에 대해 사용자 지정 정책을 만드는 경우 호스트 헤더를 전달하지 마십시오. 전달하는 경우 "403 error"가 발생합니다.
중요: Amazon Simple Storage Service(Amazon S3) 오리진의 경우, CloudFront에서 호스트 헤더에 기반한 캐시를 지원하지 않습니다. 자세한 내용은 캐싱의 기준이 될 헤더 선택을 참조하십시오.
해결 방법
캐시 정책 및 오리진 요청 정책 만들기
다음 단계를 완료하십시오.
- CloudFront 콘솔을 엽니다.
- 탐색 창에서 정책을 선택합니다.
- 사용자 지정 정책 섹션에서 캐시 정책 만들기를 선택합니다.
- 캐시 키 설정의 헤더에서 다음 헤더 포함을 선택합니다.
- 헤더 추가 드롭다운 목록에서 호스트를 선택합니다.
- 요구 사항에 따라 캐시 정책의 다른 모든 설정을 완료합니다.
- 만들기를 선택합니다.
- 정책을 CloudFront 배포판의 관련 동작에 연결합니다.
배포의 기존 동작 설정 편집
다음 단계를 완료하십시오.
- CloudFront 콘솔을 엽니다.
- 배포를 선택합니다.
- 동작 탭을 선택한 다음 호스트 헤더를 전달할 경로를 선택합니다.
- 편집을 선택합니다.
- 캐시 키 및 오리진 요청이 레거시 캐시 설정으로 지정되었는지 확인합니다.
참고: 레거시 캐시 설정을 선택하지 않은 경우 이전 섹션의 단계를 완료하여 캐시 정책을 만드십시오.
- 레거시 캐시 설정의 헤더에서 다음 헤더 포함을 선택합니다.
- 헤더 추가 메뉴에서 호스트를 선택합니다.
- 변경 사항 저장을 선택합니다.
(선택 사항) 헤더를 다른 이름으로 전달
사용자 지정 헤더 이름 또는 다른 헤더 이름으로 호스트 헤더 값을 전달하려면 CloudFront 함수 또는 AWS Lambda@Edge 함수를 사용하십시오.
헤더를 다른 이름으로 전달하려면 다음 단계를 완료하십시오.
- 수신 호스트 헤더를 확인합니다.
참고: CloudFront 함수의 경우 열람자 요청 이벤트를 확인하십시오. Lambda@Edge의 경우 열람자 또는 오리진 요청 이벤트를 확인하십시오.
- 클라이언트 요청의 호스트 헤더 값을 헤더에 저장하려면 열람자 요청에서 Lambda 함수 핸들러 명령을 사용하십시오.
참고: 예를 들어 수신 호스트 헤더가 host인 경우 동일한 값을 가진 새 헤더를 추가합니다. 다음 코드 예제를 참조하십시오.
function handler(event) { const request = event.request;
const headers = request.headers;
const host = request.headers.host.value;
headers['x-forwarded-host'] = { "value": host }
return request
}
참고: 이 예제 함수는 열람자 요청 이벤트를 활성화합니다.
- 사용자 지정 헤더를 오리진에 전달하려면 X-Forwarded-Host 헤더를 허용 목록에 추가하도록 캐시 또는 호스트 요청 정책을 구성하십시오. 자세한 내용은 사용자 지정 오리진의 요청 및 응답 동작을 참조하십시오.
관련 정보
요청 헤더에 따라 콘텐츠 캐싱
정책을 통한 캐시 키 제어