Amazon CloudFront는 내 S3 웹 사이트 버킷의 index.html 규칙을 존중하지 않습니다.
정적 웹 사이트 호스팅 옵션을 사용하여 Amazon S3에서 정적 웹 사이트를 호스팅하고 있으므로 S3에서 명시 적으로 index.html 파일을 가리 키지 않고 폴더를 렌더링합니다.
예를 들어 다음은 S3 버킷의 페이지에 대한 직접 링크입니다. http://new.rdegges.com.s3-website-us-east-1.amazonaws.com/category/2009/ 보시다시피, 언제 해당 URL을 방문하면 Amazon S3가 해당 디렉터리 내에 index.html 파일을 자동으로 렌더링하여 깨끗한 URL을 가질 수 있습니다.
이것은 모두 S3에서 잘 작동합니다. 내가 겪고있는 문제는 Amazon Cloudfront가이 동작을 제대로 처리하도록하는 것입니다. 오리진으로 지정된 S3 버킷을 사용하여 Cloudfront Distribution을 생성하고 루트로 'index.html'을 사용하도록 지시하면 S3의 index.html 동작이 모두 함께 작동하지 않습니다.
예를 들어 Cloudfront에서 위와 동일한 URL이 있습니다. http://d1mj00c6pby3gc.cloudfront.net/category/2009/
불행히도 위의 URL은 작동하지 않지만 색인 파일을 수동으로 지정하면 작동합니다. 예 : http://d1mj00c6pby3gc.cloudfront.net/category/2009/index.html
내 질문은 : 내 웹 사이트에 대한 S3 버킷 설정을 준수하도록 Cloudfront를 구성하려면 어떻게해야합니까?
S3 웹 사이트 기능은 Amazon CloudFront와 함께 사용할 수 있습니다. 그러나 S3 웹 사이트는 일반 S3 버킷과 다른 도메인 이름을 사용합니다. 이 경우 Origin Domain NameCloudFront 배포의 오리진 구성을로 설정해야 new.rdegges.com.s3-website-us-east-1.amazonaws.com합니다.
S3의 정적 웹 사이트 호스팅 패널에서이 URL (엔드 포인트)을 가져올 수 있습니다.

CloudFront가 S3 웹 사이트 도메인 이름을 가리키면 S3 웹 사이트 기능이 작동합니다.
받아 들인 답변에 몇 가지를 추가하고 싶습니다.
먼저 Default Root Object클라우드 전면에 있는지 확인하십시오 . 문서에 지정된대로 에는 적용되지 않습니다 subdirectories.
Cloudfront의 새 배포를 설정할 때 버킷을 선택할 수 있습니다 bucket-name.s3.amazonaws.com. 지역은 URL에 지정되어 있지 않습니다. 당신이해야 할 일은 s3에서 정적 사이트 URL을 가져 와서 origin url(지역이있을 것입니다) 로 사용하는 것입니다.
게임의 후반부 일 수 있지만 Lambda @ Edge를 확인하십시오 . 확장자없이 Origin 요청 을 가로 채서 폴더의 index.html 문서를 가리킬 수 있습니다. 이러한 결과는 캐시되므로 Lambda는 새 요청을받을 때만 실행됩니다.
'Nice programing' 카테고리의 다른 글
| Snow Leopard에서 .profile과 .bash_profile의 차이점 (0) | 2020.11.20 |
|---|---|
| PHP로 curl을 사용하여 파일을 업로드하는 방법 (0) | 2020.11.20 |
| 테스트 생성, 시도 생성, 생성 캐치 중 가장 바람직한 디자인은 무엇입니까? (0) | 2020.11.20 |
| MySQL 테이블 기본 키를 일부 접두사로 자동 증가시키는 방법 (0) | 2020.11.20 |
| ng-mouseover를 누르고 angularjs에서 마우스를 사용하여 항목을 토글합니다. (0) | 2020.11.20 |