Subdomínio curinga (* .example.com) com Amazon Route53 DNS e S3

12

Estou hospedando um site estático usando o Amazon Route53 para DNS e S3 para arquivos html. Está funcionando bem.

A configuração atual é:

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

(NOTA: example.com e www.example.com são buckets S3. Meus arquivos HTML residem no bucket example.com.)

Agora eu quero adicionar um subdomínio curinga como este - é isso que eu tentei:

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

A idéia é ter qualquer coisa.exemplo.com para resolver corretamente o site. Mas isso não parece estar funcionando. Então, quando vou ao site: joker.example.com, vejo uma mensagem de erro no navegador:

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

Respostas:

10

A resposta @ edvinas.me está correta. Você deve criar uma distribuição na nuvem para seu bucket.

Ao criar a distribuição em nuvem, defina a opção Nomes de Domínio alternativos como * .example.com.

Em seguida, use o URL do cloudfront como d3lt3rsz2leycm.cloudfront.net.

Agora você pode adicionar um subdomínio curinga como este:

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

E deve funcionar.

Javier Arnáiz
fonte
1

O Amazon S3 usa o nome do host para determinar o nome do bloco.

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

O nome do host é a minúscula do valor enviado pelo navegador no Host:cabeçalho. Não há como configurar um bucket para responder a vários nomes de host.

Existem algumas maneiras indiretas de fazer isso, dependendo do que você está tentando fazer, mas exigirá uma instância do EC2 executando HAProxy, Varnish, Apache ou algo semelhante, para responder às solicitações dos nomes de host curinga com um redirecionamento para reescreva a barra de endereço do navegador no nome real do host / bloco ou mova os cabeçalhos da solicitação e envie a solicitação ao S3, que não é tão ineficiente quanto parece, pois não há cobranças de transferência de dados entre S3 e EC2 na mesma região e a latência é baixa.

Michael - sqlbot
fonte
1

Seu balde S3 está configurado para aceitar apenas solicitações para example.com (e / ou www.example.com). Você não pode configurar seu bucket para aceitar ou subdomínios específicos que deseja que sejam ativos.

A única maneira de conseguir isso é usando um serviço externo como o Cloudfront http://aws.amazon.com/cloudfront/ que proxy as solicitações.

A resposta de Michael (sqlbot) parece abordar isso com mais detalhes.

phoops
fonte
3
Como fazer isso - É a própria pergunta.
Jasper
Como a configuração não é suportada, você precisa usar um serviço externo para isso.
Phoops