AWS Cloud Front, 올바른 URL을 사용하여 원본을 요청하는 방법

AWS Cloud Front, 올바른 URL을 사용하여 원본을 요청하는 방법

EC2에 있는 웹 사이트를 캐시하려고 하는데 URL이 있으므로 uncached.xyz.com원본이 지정된 Cloud Front를 만들고 Cloud Front 배포를 가리키는 uncached.xyz.com레코드를 만들었습니다 .xyz.comd111111abcdef8.cloudfront.net

그러나 서버에서 반환된 모든 정보(예: 버튼 URL)는 상대적이지 않으며 요청 URL을 포함합니다. 즉, Cloudfront가 를 사용하여 원본에 액세스하면 uncached.xyz.comCDN에서 반환된 콘텐츠(사용된 모든 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를 설정하는 것입니다.

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-updating-http-responses.html

관련 정보