¿Cómo usar un dominio personalizado registrado con AWS Route 53 en una aplicación web Next.js implementada en Vercel?

Panel de dominio personalizado de Vercel

TLDR

Actualiza los servidores de nombres del dominio de AWS Route 53 o, los tipos de registros A y CNAME con los valores proporcionados por Vercel bajo ProjectName / Settings / Domains después de que agregaste un dominio al proyecto.

Mostrará la información necesaria para configurar midominio.com y redirigir a www.midominio.com o viceversa. Después de que intentaste agregar el dominio a tu proyecto sin éxito, esa información también se enviará a tu correo electrónico explicando qué hacer.

Vercel te permite configurar registros A (recomendado) y CNAME.

Algo de antecedentes

A partir del 30 de junio de 2021 AWS Amplify no soporta todas las características de Next.js. Entonces si estás ansioso por usar el excelente Componente de Imagen, Regeneración Estática Incremental (ISR), Rutas Catch All Opcionales u otras características de Next.js 10+ con AWS Amplify tienes que esperar y tu mejor opción es desplegar en Vercel.

Pero sabemos que el tiempo es un recurso escaso y tenemos que mantener la canalización de características en funcionamiento por el bien del negocio.

Las optimizaciones de SEO y rendimiento del sitio web se debían ayer. Nuestra investigación indica que Next.js es imprescindible para una mejor Experiencia de Desarrollador y Experiencia de Usuario. El Componente de Imagen y la Optimización Automática de Imágenes impactan directamente la experiencia del usuario evitando Cumulative Layout Shift y siendo lazy loaded por defecto, así aumentando la velocidad de la página.

Next.js hace el trabajo pesado para nosotros, simples desarrolladores: cambio de tamaño de imagen, optimización y entrega en formatos modernos desde una variedad de fuentes. Optimización de imagen bajo demanda que no aumenta los tiempos de compilación.

Lo siento AWS pero necesito esas características y no puedo esperar por ti. Tienes excelentes servicios pero tus capacidades de renderización del servidor (SSR) y la integración de Next.js no coinciden con mis casos de uso. Pero al menos obtuviste el dominio registrado, y si sigue funcionando como se espera con el despliegue en Vercel, no lo transferiré a Vercel.

Lado de Vercel

Asumiendo que tienes tu proyecto desplegado en Vercel, solo tienes que agregar el dominio personalizado. Si necesitas hacer configuración avanzada puedes verificar la documentación.

Por ahora intentaré mantenerlo simple basado en mi experiencia.

En la configuración del proyecto en el panel de Vercel, hay un enlace Domain donde puedes agregar tu midominio.com. Si no tienes un dominio también podrías comprarlo con Vercel, AWS Route 53 o tu proveedor de elección.

Después de que hagas clic en el botón Add, el servicio indicará cualquier configuración inválida para el Registro A o los Servidores de nombres (en cada pestaña) y recomendará qué hacer.

También te enviará correos electrónicos con los valores para los tipos de registros A y CNAME, y los servidores de nombres necesarios para actualizar tus registros DNS del proveedor.

Para midominio.com

Para configurar el dominio, establece el siguiente registro en tu proveedor DNS (recomendado):

nombretipovalor
@A76.76.21.21

Alternativamente, también puedes cambiar los servidores de nombres de tu dominio al siguiente conjunto previsto:

  • ns1.vercel-dns.com
  • ns2.vercel-dns.com

Para www.midominio.com

Para configurar el dominio, establece el siguiente registro en tu proveedor DNS (recomendado):

nombretipovalor
wwwCNAMEcname.vercel-dns.com

Alternativamente, también puedes cambiar los servidores de nombres de tu dominio al siguiente conjunto previsto:

  • ns1.vercel-dns.com
  • ns2.vercel-dns.com

¡Seguido por un correo electrónico con el esperado configurado exitosamente después de todo el trabajo duro!

Si no estás familiarizado con la terminología de DNS relevante para esta tarea, aquí está la explicación de Vercel, puedes verificar la guía completa si no hay prisa.

... se te presentarán diferentes métodos para configurarlo, dependiendo de si es un dominio apex (ejemplo.com) o subdominio (docs.ejemplo.com).

Los dominios apex pueden configurarse con un registro A, mientras que los subdominios pueden configurarse con un registro CNAME. Ambos tipos de dominio también pueden configurarse usando el método de Servidores de nombres.

Lado de AWS Route 53

Panel de AWS Route 53

Siempre después de actualizar los servidores de nombres o, los registros A y CNAME debes esperar algo de tiempo para que los cambios se apliquen.

El tiempo de espera es diferente para cada proveedor. Deberías llamar al servicio de atención al cliente si tarda demasiado.

Con AWS Route 53 me tomó algunos minutos ver mi sitio web en vivo nuevamente.

Servidores de nombres

Los servidores de nombres asociados con tu dominio registrado en AWS Route 53 deberían encontrarse en tu Route 53 / Domains / Registered Domains / midominio.com / Name Servers. Se ven así:

  • ns-123.awsdns-31.net
  • ns-4567.awsdns-63.co.uk
  • ns-432.awsdns-50.com
  • ns-7654.awsdns-50.org

Reemplaza esos servidores de nombres awsdns en Route 53 / Domains / Registered Domains / midominio.com / Name Servers / Add or edit name servers con los Servidores de nombres previstos de Vercel que se recomiendan bajo la pestaña de Servidores de nombres. Deberían verse así:

  • ns1.vercel-dns.com
  • ns2.vercel-dns.com

Registro A

Copia el valor del Registro A desde tu panel de proyecto en Vercel. Debería verse como 76.76.21.21.

Ve a tu AWS Route 53 / Hosted Zones / midominio.com / Create Record (debería ser un registro A por defecto, si no, selecciona un tipo A de la lista desplegable Tipo de Registro), y pégalo en el campo Valor.

Si necesitas información adicional para cada campo puedes hacer clic en el enlace Info sobre el campo o consultar la documentación de Amazon Route 53. Deja el campo name vacío y debería tomar un valor por defecto válido.

Haz lo mismo para el tipo CNAME, copia tu valor de registro CNAME de Vercel cname.vercel-dns.com y pégalo en el campo de valor de Registro de Route 53. El campo name debería ser www en este caso, u otro que Vercel te recomiende.

  • Actualización asincrónica de elementos relacionados con AWS DataStore en una aplicación web Next.js.

    Al trabajar con AWS DataStore tienes que lidiar con operaciones async/await. Actualizar una lista de elementos cuando el orden de ejecución de las operaciones asincrónicas no es obligatorio es viable hacerlo con Promise.all() y map. Actualizar elementos relacionados, donde el resultado de la promesa del elemento anterior es necesario como entrada para el siguiente elemento, se puede lograr con la declaración for await...of.

  • Privacidad GDPR, estado de consentimiento "denegado", Google Analytics 4 y Next.js.

    Mantén la privacidad de tus usuarios en el centro de tus prácticas según lo establecido por la GDPR y las leyes de California. Establece ad_storage="denegado", analytics_storage="denegado", gtag("set", "ads_data_redaction", true) y "anonymize_ip": true para menor intrusión mientras disfrutas de las excelentes características de la nueva Google Analytics 4 en tu aplicación web Next.js.

  • Análisis web autohospedado gratuito con Umami, PlanetScale, Prisma y Vercel.

    Tener mi propio análisis web autohospedado con Umami, PlanetScale, Prisma y Vercel, me está ayudando a componer un panorama completo de las analíticas web de mi sitio, sin sesgo de plataforma, con una solución simple y enfocada en la privacidad, y gratuita. Además, porque me interesa el lado técnico, ha sido una buena oportunidad para interactuar con alternativas de base de datos SQL como PlanetScale, ORM de Node.js como Prisma, y despliegues a Vercel. Esta guía cubre cómo adapté el proceso de instalación de Umami para funcionar con PlanetScale.