
EC2에 있는 웹 사이트를 캐시하려고 하는데 URL이 있으므로 uncached.xyz.com
원본이 지정된 Cloud Front를 만들고 Cloud Front 배포를 가리키는 uncached.xyz.com
레코드를 만들었습니다 .xyz.com
d111111abcdef8.cloudfront.net
그러나 서버에서 반환된 모든 정보(예: 버튼 URL)는 상대적이지 않으며 요청 URL을 포함합니다. 즉, Cloudfront가 를 사용하여 원본에 액세스하면 uncached.xyz.com
CDN에서 반환된 콘텐츠(사용된 모든 cname에 대해)에는 원본 URL 대신 원본 URL이 포함됩니다. CloudFront 배포에 액세스하는 데 사용되는 URL로, <a href="uncached.xyz.com/info"><a>
있어야 할 위치 와 유사합니다 <a href="xyz.com/info"><a>
.
tl:dr
CloudFront는 다음을 반환해야 합니다.
<a href="xyz.com/info"><a>
(CDN 배포(캐시된 웹 사이트)를 가리키는 액세스된 URL)
그러나 다음을 반환합니다.
<a href="uncached.xyz.com/info"><a>
(캐시할 데이터(웹 사이트)가 포함된 원본 URL)
원본 서버에 액세스하는 데 사용되는 URL이 구성된 원본 URL이 아닌 CloudFront 배포라고 생각하도록 원본 서버를 "스푸핑"하는 방법이 있습니까?
내가 사용하는 것의 더 간단한 버전입니다.
답변1
이를 수행하는 방법에는 여러 가지가 있습니다.
원본 요청이 백엔드 애플리케이션에 필요한 정보를 전달하도록 Cloudfront 구성 내에서 헤더 X-Forwarded-Host 및 X-Forwarded-Proto를 설정합니다. 백엔드에서는 헤더(있는 경우)를 사용하여 페이지 내 콘텐츠를 생성합니다.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto
또 다른 접근 방식은 원본 응답을 처리하고 필요한 경우 콘텐츠를 대체하는 Lambda@edge를 설정하는 것입니다.