Configurar el reenvío de URL basado en DNS en Amazon Route53 [cerrado]

140

Estoy tratando de configurar el reenvío en Amazon Route53. Mi último servicio DNS (Nettica) me permitió enrutar solicitudes a "aws.example.com" a "https://myaccount.signin.aws.amazon.com/console/".

¿Esta funcionalidad es compatible con Route53?

¿Cómo logra esto Nettica? ¿Inserta un registro especial A, CNAME, PTR o TXT?

Saurav
fuente
Crear una distribución de Cloudfront con la URL como origen también funciona. Simplemente apunte el dominio a la distribución de Cloudfront desde Route53 y asegúrese de configurar los certificados TLS correctamente.
Deiwin

Respuestas:

325

Me encontraba exactamente con el mismo problema que describió Saurav, pero realmente necesitaba encontrar una solución que no requiriera otra cosa que la Ruta 53 y S3. Creé una guía práctica para mi blog que detalla lo que hice.

Esto es lo que se me ocurrió.


Objetivo

Usando solo las herramientas disponibles en Amazon S3 y Amazon Route 53, cree un redireccionamiento de URL que reenvíe automáticamente http://url-redirect-example.vivekmchawla.com a la página de inicio de sesión de la consola de AWS con alias de "MyAccount", ubicado en https : //myaccount.signin.aws.amazon.com/console/ .

Esta guía le enseñará a configurar el reenvío de URL a cualquier URL, no solo a las de Amazon. Aprenderá cómo configurar el reenvío a carpetas específicas (como "/ consola" en mi ejemplo) y cómo cambiar el protocolo de redireccionamiento de HTTP a HTTPS (o viceversa).


Paso uno: Crea tu cubo S3

Abra la consola de administración S3 y haga clic en "Crear depósito"

Abra la consola de administración S3 y haga clic en "Crear bucket".


Paso dos: nombra tu cubo S3

Nombra tu cubo S3

  1. Elige un nombre de cubo. ¡Este paso es realmente importante! Debe nombrar el depósito EXACTAMENTE igual que la URL que desea configurar para el reenvío. Para esta guía, usaré el nombre "url-redirect-example.vivekmchawla.com".

  2. Seleccione la región que funcione mejor para usted. Si no sabe, mantenga el valor predeterminado.

  3. No se preocupe por configurar el registro. Simplemente haga clic en el botón "Crear" cuando esté listo.


Paso 3: habilite el alojamiento de sitios web estáticos y especifique las reglas de enrutamiento

Habilite el alojamiento de sitios web estáticos y especifique reglas de enrutamiento

  1. En la ventana de propiedades, abra la configuración de "Alojamiento de sitios web estático".
  2. Seleccione la opción para "Habilitar alojamiento de sitios web".
  3. Introduzca un valor para el "Documento de índice". Este objeto (documento) nunca será servido por S3, y nunca tendrá que cargarlo. Solo usa el nombre que quieras.
  4. Abra la configuración de "Editar reglas de redireccionamiento".
  5. Pegue el siguiente fragmento de XML en su totalidad.

    <RoutingRules>
      <RoutingRule>
        <Redirect>
          <Protocol>https</Protocol>
          <HostName>myaccount.signin.aws.amazon.com</HostName>
          <ReplaceKeyPrefixWith>console/</ReplaceKeyPrefixWith>
          <HttpRedirectCode>301</HttpRedirectCode>
        </Redirect>
      </RoutingRule>
    </RoutingRules>
    

Si tiene curiosidad acerca de lo que está haciendo el XML anterior, visite la documentación de AWM para "Sintaxis para especificar reglas de enrutamiento" . Una técnica adicional (no cubierta aquí) es reenviar a páginas específicas en el host de destino, por ejemplo http://redirect-destination.com/console/special-page.html. Lea sobre el <ReplaceKeyWith>elemento si necesita esta funcionalidad.


Paso 4: Anote el "Punto final" de su Redirect Bucket

Tome nota del punto final de su Redirect Bucket

Tome nota del "punto final" de alojamiento de sitios web estático que Amazon creó automáticamente para este depósito. Necesitará esto para más adelante, así que resalte la URL completa, luego cópiela y péguela en el bloc de notas.

¡PRECAUCIÓN! En este punto, puede hacer clic en este enlace para verificar si sus Reglas de redireccionamiento se ingresaron correctamente, ¡pero tenga cuidado! Este es el por qué...

Digamos que ingresó un valor incorrecto dentro de las <Hostname>etiquetas en sus Reglas de redireccionamiento. Tal vez accidentalmente escribiste myaccount.amazon.com, en lugar de myaccount.signin.aws.amazon.com. Si hace clic en el enlace para probar la URL de Endpoint, ¡AWS con gusto redirigirá su navegador a la dirección incorrecta!

Después de notar su error, probablemente editará las <Hostname>Reglas de redireccionamiento para corregir el error. Desafortunadamente, cuando intentas hacer clic en el enlace nuevamente, ¡lo más probable es que termines siendo redirigido a la dirección incorrecta! Aunque haya corregido la <Hostname>entrada, su navegador está almacenando en caché la entrada anterior (¡incorrecta!). Esto sucede porque estamos usando una redirección HTTP 301 (permanente), que los navegadores como Chrome y Firefox almacenarán en caché de forma predeterminada.

Si copia y pega la URL de Endpoint en un navegador diferente (o borra el caché en su actual), tendrá otra oportunidad de ver si su <Hostname>entrada actualizada es finalmente la correcta.

Para estar seguro, si desea probar su URL de Endpoint y las Reglas de redireccionamiento, debe abrir una sesión de navegación privada, como "Modo de incógnito" en Chrome. Copie, pegue y pruebe la URL de punto final en modo de incógnito y todo lo que esté en caché desaparecerá una vez que cierre la sesión.


Paso 5: abra la consola de administración de Route53 y vaya a los conjuntos de registros para su zona alojada (nombre de dominio)

Abra la consola de administración de Route 53 para agregar conjuntos de registros a su zona hospedada

  1. Seleccione la Zona Hospedada (nombre de dominio) que utilizó cuando creó su depósito. Como llamé a mi cubo "url-redirect-example.vivekmchawla.com", voy a seleccionar la Zona Hospedada de vivekmchawla.com.
  2. Haga clic en el botón "Ir a conjuntos de registros".

Paso 6: haga clic en el botón "Crear conjunto de registros"

Haga clic en el botón Crear conjunto de registros

Al hacer clic en "Crear conjunto de registros" se abrirá la ventana Crear conjunto de registros en el lado derecho de la consola de administración de Route53.


Paso 7: crear un conjunto de registros CNAME

Crear un conjunto de registros CNAME

  1. En el campo Nombre, ingrese la parte del nombre de host de la URL que utilizó al nombrar su bucket de S3. La "porción del nombre de host" de la URL es todo a la IZQUIERDA del nombre de su Zona Hospedada. Llamé a mi cubo S3 "url-redirect-example.vivekmchawla.com", y mi zona alojada es "vivekmchawla.com", por lo que la parte del nombre de host que necesito ingresar es "url-redirect-example".

  2. Seleccione "CNAME - Nombre canónico" para el Tipo de este conjunto de registros.

  3. Para el Valor, pegue la URL de punto final del depósito S3 que creamos en el Paso 3.

  4. Haga clic en el botón "Crear conjunto de registros". Suponiendo que no haya errores, ahora podrá ver un nuevo registro CNAME en la lista de conjuntos de registros de su zona hospedada.


Paso 8: pruebe su nueva redirección de URL

Abra una nueva pestaña del navegador y escriba la URL que acabamos de configurar. Para mí, eso es http://url-redirect-example.vivekmchawla.com . Si todo funcionó correctamente, debería ser enviado directamente a una página de inicio de sesión de AWS.

Debido a que utilizamos el myaccount.signin.aws.amazon.comalias como la URL de destino de nuestra redirección, Amazon sabe exactamente a qué cuenta estamos intentando acceder, y nos lleva directamente allí. Esto puede ser muy útil si desea proporcionar un enlace de inicio de sesión de AWS corto, limpio y de marca a los empleados o contratistas.

¡Todo listo!  Su reenvío de URL debería llevarlo a la página de inicio de sesión de AWS.


Conclusiones

Personalmente, me encantan los diversos servicios de AWS, pero si ha decidido migrar la administración de DNS a Amazon Route 53, la falta de reenvío de URL fácil puede ser frustrante. Espero que esta guía haya ayudado a configurar un reenvío de URL para sus zonas alojadas un poco más fácil.

Si desea obtener más información, consulte las siguientes páginas del sitio de documentación de AWS.

¡Salud!

Vivek M. Chawla
fuente
15
+1 para esta solución completamente inteligente: ¡muchas gracias por tomarse el tiempo para compilar una guía tan épica paso a paso, he actualizado mi respuesta para referir a los futuros lectores a los suyos en consecuencia!
Steffen Opel
23
Nota :: Para aquellos que deseen redireccionamientos de dominio raíz: example.org -> example.com - haga todo lo mismo excepto usar un Registro con "Alias: Sí" habilitado. Luego seleccione el cubo como el objetivo.
JaredBroad
10
Gran solución Pero me he encontrado con un problema al usar https para la URL original. Si el bucket que estoy redirigiendo es dev.example.com, el redireccionamiento funciona muy bien para http: // dev.example.com pero falla para https: // dev.example.com. No he encontrado una solución para este problema.
Greg
44
@ Greg Creo que eso puede tener algo que ver con cómo Amazon maneja HTTPS para S3. Desafortunadamente, cuando se usa un CNAME para acceder a un bucket de S3, no se puede forzar SSL agregando "https" porque Amazon no aloja un certificado para "* .example.com". Dado que S3 no permitirá la conexión, nunca llegaremos a la lógica de redireccionamiento. Desafortunadamente, no puedo ver una solución a esto.
Vivek M. Chawla
17
Hay una nueva opción "Redirigir todas las solicitudes a otro nombre de host" en las opciones del bucker. Puse allí la URL de inicio de sesión de IAM y funcionó de maravilla, sin necesidad de XML.
Dan Milon
145

El soporte de AWS señaló una solución más simple. Es básicamente la misma idea propuesta por @Vivek M. Chawla, con una implementación más simple.

AWS S3:

  1. Crea un Bucket con tu dominio completo, como aws.example.com
  2. En las propiedades del depósito, seleccione Redirect all requests to another host namee ingrese su URL: https://myaccount.signin.aws.amazon.com/console/

AWS Route53:

  1. Cree un conjunto de registros tipo A. Cambie Alias ​​a Yes. Haga clic en el Alias Targetcampo y seleccione el depósito S3 que creó en el paso anterior.

Referencia: Cómo redirigir dominios usando Amazon Web Services

Documentación oficial de AWS: ¿Hay alguna forma de redirigir un dominio a otro dominio utilizando Amazon Route 53?

Roberto Schneiders
fuente
16
Esto funciona muy bien para HTTP pero no HTTPS.
mythofechelon
@mythofechelon ¿Qué quieres decir? No he tenido ningún problema con https hasta ahora. Si desea usar https con su dominio (por ejemplo: https: // aws.example.com), este es un problema completamente diferente, ya que necesitará un servidor con certificado SSL para poder hacerlo.
Roberto Schneiders
1
La documentación oficial está aquí: aws.amazon.com/premiumsupport/knowledge-center/…
Mario Olivio Flores
2
¿Esta Redirect all requests to another host nameopción todavía existe? No puedo verlo cuando voy a las propiedades del cubo.
aidan
1
Esta debería ser la respuesta correcta, es mejor hacer referencia a componentes dentro de AWS utilizando Alias ​​para fines de rendimiento en lugar de CNAME (eso funciona pero no es el mejor enfoque).
Douglas Figueroa
11

Pude usar nginx para manejar la redirección 301 a la página de inicio de sesión de aws.

Vaya a su carpeta nginx conf (en mi caso es /etc/nginx/sites-availableen el que creo un enlace simbólico /etc/nginx/sites-enabledpara los archivos conf habilitados).

Luego agregue una ruta de redireccionamiento

server {
  listen 80;
  server_name aws.example.com;
  return 301 https://myaccount.signin.aws.amazon.com/console;
}

Si está utilizando nginx, lo más probable es que tenga bloques de servidor adicionales (hosts virtuales en terminología apache) para manejar su ápice de zona (example.com) o como lo haya configurado. Asegúrese de tener uno de ellos configurado para ser su servidor predeterminado.

server {
  listen 80 default_server;
  server_name example.com;
  # rest of config ...
}

En la ruta 53, agregue un A recordfor aws.example.comy establezca el valor en la misma IP utilizada para su ápice de zona.

Vincent Mac
fuente
Aún mejor sería usar un registro Alias ​​para apuntar al equilibrador de carga elástico frente a esta máquina.
maletor
9

Actualizar

Si bien mi respuesta original a continuación sigue siendo válida y podría ser útil para comprender la causa de que el reenvío de URL basado en DNS no esté disponible a través de Amazon Route 53 de inmediato, recomiendo comprobar la solución indirecta completamente inteligente de Vivek M. Chawla a través de la introducción. El soporte de Amazon S3 para sitios web redirige y logra un servidor autónomo menos y, por lo tanto, una solución gratuita dentro de AWS solo así.

  • La implementación de una solución automatizada para generar tales redirecciones se deja como un ejercicio para el lector, pero rinda homenaje a la respuesta épica de Vivek publicando su solución;)

Respuesta original

Nettica debe estar ejecutando una solución de redirección personalizada para esto, aquí está el problema:

Puede crear un alias CNAME como aws.example.comfor myaccount.signin.aws.amazon.com, sin embargo, DNS no proporciona soporte oficial para aliasing un subdirectorio como consoleen este ejemplo.

  • Es una pena que AWS no parezca simplemente hacer esto de forma predeterminada al golpear https://myaccount.signin.aws.amazon.com/(solo lo intenté), porque resolvería su problema de inmediato y tendría mucho sentido en primer lugar; Además, debería ser bastante fácil de configurar por su parte.

Por esa razón, algunos proveedores de DNS aparentemente han implementado una solución personalizada para permitir redirecciones a subdirectorios; Me atrevo a suponer que básicamente están facilitando un alias CNAME para un dominio propio y están redirigiendo nuevamente desde allí al destino final a través de una redirección HTTP 3xx inmediata .

Entonces, para lograr el mismo resultado, necesitaría tener un servicio HTTP ejecutándose para realizar estos redireccionamientos, que no es la solución simple que uno esperaría, por supuesto. Tal vez / Espero que alguien pueda llegar a un enfoque más inteligente aún.

Steffen Opel
fuente
3
Los CNAME son alias y no redirigen.
ejain
@ejain: tienes razón, por supuesto, lo arreglé en consecuencia (debe haber perdido la notificación en ese momento); ¡Gracias por señalar esta frase potencialmente engañosa!
Steffen Opel
0

Si todavía tiene problemas con el enfoque simple, cree un depósito vacío y luego Redirect all requests to another host nameen Alojamiento web estático en propiedades a través de la consola. Asegúrese de haber establecido 2 registros A en route53, uno para final-destination.comy otro para redirect-to.final-destination.com. La configuración de cada uno de estos será idéntica, pero el nombre será diferente, por lo que coincidirá con los nombres que establezca para sus depósitos / URL.

DanV
fuente