Estoy tratando de hacer algo que debería ser relativamente sencillo: quiero configurar algunos dominios y subdominios para redirigir al dominio principal de nuestro sitio, pero quiero poner los redireccionamientos en Cloudfront. Todo funciona, excepto redirigir la ruta raíz, que me da un archivo XML que describe en parte el bucket de S3.
Antecedentes
S3
S3 le permite configurar un cubo de redireccionamiento completo , como:
Al probar esto, el punto final web (brass9-com.s3-website-us-west-1.amazonaws.com) hace lo que debería: redirige a brass9.com. Bueno.
Frente a la nube
Cloudfront le permite apuntar a un depósito S3, pero la forma en que sugiere que lo haga es incorrecto: en lugar de señalar el depósito por su nombre, como brass9-com.s3.amazonaws.com, debe usar el Punto final web anterior. Aparte de eso, puede dejar todo en sus valores predeterminados y obtener un buen comportamiento de redireccionamiento. Entonces, una ruta como www.brass9.com/portfolio redirige correctamente a donde debería. También bueno.
El problema: la redirección del dominio raíz
Lo único que luego no funciona es redirigir desde www.brass9.com . En lugar de obtener una redirección, obtiene este resultado extraño:
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>brass9-com</Name><Prefix></Prefix>
<Marker></Marker><MaxKeys>1000</MaxKeys><IsTruncated>false</IsTruncated>
</ListBucketResult>
OKAY... . Por lo tanto, esto no es completamente inesperado , porque no hay un objeto raíz predeterminado. Pero, ¿qué objeto raíz predeterminado podría especificar para evitar este comportamiento? ¿Cuál es el nombre del objeto de redireccionamiento S3, si corresponde, al que necesito señalar? ¿O hay alguna otra configuración adecuada, o es solo un error en la forma en que Cloudfront y S3 interactúan que Amazon necesita corregir?
Solución no funcional conocida: objeto raíz predeterminado
Es posible especificar un Objeto raíz predeterminado de index.html, pero no sirve de nada, solo cambia el problema. La URL de Cloudfront en su lugar redirige a /index.html en el sitio principal, que es un 404 (no usamos un archivo index.html, es un sitio basado en el marco del lado del servidor). Podría poner un index.html en el servidor, pero eso derrota la pequeña ganancia de velocidad de usar Cloudfront en primer lugar.
Preguntas similares
Una pregunta plantea algo similar, pero obtiene una respuesta en blanco de 0 bytes por alguna razón en lugar de lo que estoy viendo, una respuesta XML. No incluye una pregunta sobre ese problema o una resolución.
Artículos relacionados
Un artículo propone que solo sirva todo el sitio tanto en el dominio desnudo como en el dominio www . Esto afecta a los marcadores de cualquier usuario, su clasificación de búsqueda, etc., etc. No debe hacer esto.
Varios discuten el alojamiento de un sitio web estático en S3 y Cloudfront en lugar de un esquema de redireccionamiento, por lo que no están relacionados.
Entonces, ¿cómo hago esto correctamente?
Captura de pantalla de la configuración de Cloudfront: sin objeto raíz predeterminado, apuntando al origen S3. Ignorar el InProgress: acababa de activar y desactivar el Objeto raíz predeterminado para probar.
Y la configuración de origen para esa distribución:
fuente
GET /
desde antes de corregir su configuración para usar el punto final web.Respuestas:
Si tiene este problema, verifique primero cuando configure el origen del depósito s3 para el frente de la nube, el autocompletado devuelve el punto final RES3 s3 domain.amazonaws.com que devuelve esta respuesta ListBucketResult.
Debe escribir manualmente el punto final del sitio web domain.s3-website-region.amazonaws.com
Importante: si ha configurado incorrectamente el frente de la nube con el punto final REST, debe invalidar la memoria caché a través de invalidaciones o seguirá devolviendo la respuesta REST
fuente
origin
bloque de la distribución, useaws_s3_bucket.BUCKET.website_endpoint
eldomain_name
(nobucket_regional_name
) y agregue elcustom_origin_config
bloque.Solución: configure el redireccionamiento como se indica en la pregunta y luego espere los tiempos de caché S3 y CloudFront. Pueden durar 4 horas o más, por lo que solo tiene que configurarlo todo y luego esperar y esperar lo mejor.
(Esta es la solución de Michael de los Comentarios, pero ahora han pasado años y esto realmente merecía ser marcado como Respondido).
fuente
Escribir como respuesta ya que no puedo comentar: de la documentación en http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/DistributionConfigDatatype.html#DistributionConfigDatatype_Elements parece que puede tener un objeto raíz predeterminado en blanco:
fuente