Subdominio comodín (* .example.com) con Amazon Route53 DNS y S3

12

Estoy alojando un sitio web estático con Amazon Route53 para DNS y S3 para archivos html. Esta funcionando bien

La configuración actual es:

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 y www.example.com son depósitos S3. Mis archivos HTML residen en el depósito example.com).

Ahora quiero agregar un subdominio comodín como este: esto es lo que probé:

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

La idea es tener algo.example.com para resolver correctamente el sitio web. Pero esto no parece estar funcionando. Entonces, cuando voy al sitio web: joker.example.com, veo un mensaje de error en el navegador:

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

Respuestas:

10

La respuesta @ edvinas.me es correcta. Debe crear una distribución en la nube para su bucket.

Cuando cree la distribución en la nube, configure la opción de Nombres de dominio alternativos en * .example.com.

Luego use la URL de Cloudfront como d3lt3rsz2leycm.cloudfront.net.

Ahora puede agregar un subdominio comodín como este:

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

Y debería funcionar.

Javier Arnáiz
fuente
1

Amazon S3 usa el nombre de host para determinar el nombre del depósito.

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

El nombre de host es la minúscula del valor enviado por el navegador en el Host:encabezado. No hay una manera de configurar un depósito para responder a múltiples nombres de host.

Hay algunas formas indirectas de lograr esto, dependiendo de lo que intente hacer, pero requerirá una instancia EC2 que ejecute HAProxy, Varnish, Apache o algo similar, para responder a las solicitudes de los nombres de host comodín con una redirección a reescriba la barra de direcciones del navegador al nombre de host / nombre de host real o modifique los encabezados de solicitud y delegue la solicitud a S3, que no es tan ineficiente como puede parecer, ya que no hay cargos de transferencia de datos entre S3 y EC2 dentro del mismo región, y la latencia es baja.

Michael - sqlbot
fuente
1

Su S3 Bucket está configurado para aceptar solo solicitudes de example.com (y / o www.example.com). No puede configurar su depósito para aceptar ni ningún subdominio específico que desee que esté activo.

La única forma en que podría lograr esto es mediante el uso de un servicio externo como Cloudfront http://aws.amazon.com/cloudfront/ que representaría las solicitudes.

La respuesta de Michael (sqlbot) parece cubrir esto con más detalle.

phoops
fuente
3
Cómo hacer eso: ES la pregunta en sí.
Jasper
Como la configuración no es compatible, debe utilizar un servicio externo para eso.
phoops