Amazon Route53 DNS 및 S3가 포함 된 와일드 카드 하위 도메인 (* .example.com) 용 S3을

DNS 용 Amazon Route53과 html 파일 용 S3을 사용하여 정적 웹 사이트를 호스팅하고 있습니다. 잘 작동합니다.

현재 설정은 다음과 같습니다

example.com.  A   ALIAS s3-website-us-east-1.amazonaws.com.
www.example.com. CNAME www.example.com.s3-website-us-east-1.amazonaws.com

(참고 : example.com 및 www.example.com은 S3 버킷입니다. HTML 파일은 example.com 버킷에 있습니다.)

이제 와일드 카드 하위 도메인을 다음과 같이 추가하고 싶습니다.

*.example.com. CNAME  www.example.com.s3-website-us-east-1.amazonaws.com

아이디어는 웹 사이트를 올바르게 해결하기 위해 anything.example.com을 갖는 것입니다. 그러나 이것은 작동하지 않는 것 같습니다. 따라서 웹 사이트 : joker.example.com으로 이동하면 브라우저에 오류 메시지가 표시됩니다.

Code: NoSuchBucket
Message: The specified bucket does not exist
BucketName: joker.example.com


답변

@ edvinas.me 답변이 정확합니다. 버킷에 대한 클라우드 배포를 생성해야합니다.

클라우드 프론트 배포를 생성 할 때 대체 도메인 이름 옵션을 * .example.com으로 설정하십시오.

그런 다음 d3lt3rsz2leycm.cloudfront.net과 같은 클라우드 프론트 URL을 사용하십시오.

이제 다음과 같이 와일드 카드 하위 도메인을 추가 할 수 있습니다.

*.example.com. CNAME  3lt3rsz2leycm.cloudfront.net.

그리고 작동해야합니다.


답변

Amazon S3는 호스트 이름을 사용하여 버킷 이름을 결정합니다.

http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html

호스트 이름은 Host:헤더 에서 브라우저가 보낸 값의 소문자입니다 . 여러 호스트 이름에 응답하도록 버킷을 구성 할 수있는 방법이 없습니다.

수행하려는 작업에 따라이 작업을 수행 할 수있는 몇 가지 방법이 있지만 HAProxy, Varnish, Apache 등을 실행하는 EC2 인스턴스가 필요합니다. 브라우저의 주소 표시 줄을 실제 호스트 이름 / 버킷 이름으로 다시 쓰거나 요청 헤더를 변경하고 요청을 S3으로 프록시 처리하십시오. 대기 시간이 짧습니다.


답변

S3 버킷은 example.com (및 / 또는 www.example.com)에 대한 요청 만 수락하도록 구성되어 있습니다. 버킷 또는 활성화하려는 특정 하위 도메인을 허용하도록 버킷을 구성 할 수 없습니다.

이를 해결할 수있는 유일한 방법은 Cloudfront http://aws.amazon.com/cloudfront/ 와 같은 외부 서비스를 사용 하여 요청을 프록시하는 것입니다.

Michael의 (sqlbot) 답변은 이것을 더 자세히 다루는 것 같습니다.