Saltar al contenido principal
Para alojar tu documentación en una subruta como yoursite.com/docs utilizando Cloudflare, debes crear y configurar un Cloudflare Worker.
Antes de comenzar, necesitas una cuenta de Cloudflare y un nombre de dominio (puede gestionarse dentro o fuera de Cloudflare).

Configura un Cloudflare Worker

Crea un Cloudflare Worker siguiendo la guía de inicio de Cloudflare Workers, si aún no lo has hecho.
Si tu proveedor de DNS es Cloudflare, desactiva el proxy para el registro CNAME para evitar posibles problemas de configuración.

Proxies con implementaciones de Vercel

Si utilizas Cloudflare como proxy con implementaciones de Vercel, debes asegurarte de una configuración adecuada para evitar conflictos con la verificación del domain de Vercel y el aprovisionamiento de certificados SSL. Una configuración de proxy incorrecta puede impedir que Vercel aprovisione certificados SSL de Let’s Encrypt y provocar fallos en la verificación del domain.

Lista obligatoria de rutas permitidas

Tu Cloudflare Worker debe permitir el tráfico a estas rutas específicas sin bloquear ni redirigir:
  • /.well-known/acme-challenge/* - Obligatoria para la verificación de certificados de Let’s Encrypt
  • /.well-known/vercel/* - Obligatoria para la verificación del domain de Vercel
Aunque Cloudflare gestiona automáticamente muchas reglas de verificación, crear reglas personalizadas adicionales puede bloquear inadvertidamente este tráfico crítico.

Requisitos para el reenvío de cabeceras

Asegúrate de que la cabecera HOST se reenvíe correctamente en la configuración de tu Worker. Si no se reenvían correctamente las cabeceras, las solicitudes de verificación fallarán.

Configurar el enrutamiento

En tu dashboard de Cloudflare, selecciona Edit Code y añade el siguiente script en el código de tu Worker. Consulta la documentación de Cloudflare para obtener más información sobre cómo editar un Worker.
Reemplaza [SUBDOMAIN] por tu subdominio único, [YOUR_DOMAIN] por la URL base de tu sitio web y /docs por la subruta que desees si es diferente.
addEventListener("fetch", (event) => {
  event.respondWith(handleRequest(event.request));
});

async function handleRequest(request) {
  try {
    const urlObject = new URL(request.url);
    
    // Si la solicitud es a una ruta de verificación de Vercel, permitir que pase
    if (urlObject.pathname.startsWith('/.well-known/')) {
      return await fetch(request);
    }
    
    // Si la solicitud es al subpath de docs
    if (/^\/docs/.test(urlObject.pathname)) {
      // Entonces hacer proxy a Mintlify
      const DOCS_URL = "[SUBDOMAIN].mintlify.dev";
      const CUSTOM_URL = "[YOUR_DOMAIN]";

      let url = new URL(request.url);
      url.hostname = DOCS_URL;

      let proxyRequest = new Request(url, request);

      proxyRequest.headers.set("Host", DOCS_URL);
      proxyRequest.headers.set("X-Forwarded-Host", CUSTOM_URL);
      proxyRequest.headers.set("X-Forwarded-Proto", "https");
      // Si se despliega en Vercel, preservar la IP del cliente
      proxyRequest.headers.set("CF-Connecting-IP", request.headers.get("CF-Connecting-IP"));

      return await fetch(proxyRequest);
    }
  } catch (error) {
    // Si no se encuentra ninguna acción, procesar la solicitud normal
    return await fetch(request);
  }
}
Selecciona Deploy y espera a que se propaguen los cambios.
Después de configurar tu DNS, los subdomains personalizados suelen estar disponibles en pocos minutos. La propagación de DNS a veces puede tardar de 1 a 4 horas y, en casos raros, hasta 48 horas. Si tu subdomain no está disponible de inmediato, espera antes de intentar solucionarlo.

Prueba tu Worker

Después de desplegar tu código, prueba tu Worker para asegurarte de que dirige a tu documentación de Mintlify.
  1. Prueba usando la URL de vista previa del Worker: your-worker.your-subdomain.workers.dev/docs
  2. Verifica que el Worker dirija a tu documentación de Mintlify y a tu sitio web.

Agregar domain personalizado

  1. En tu dashboard de Cloudflare, ve a tu Worker.
  2. Ve a Settings > Domains & Routes > Add > Custom Domain.
  3. Agrega tu domain.
Recomendamos agregar tu domain tanto con www. como sin www. al inicio.
Consulta Add a custom domain en la documentación de Cloudflare para obtener más información.

Resolver conflictos de DNS

Si tu domain ya apunta a otro servicio, debes eliminar el registro DNS existente. Tu Cloudflare Worker debe estar configurado para controlar todo el tráfico de tu domain.
  1. Elimina el registro DNS existente para tu domain. Consulta Eliminar registros DNS en la documentación de Cloudflare para obtener más información.
  2. Vuelve a tu Worker y agrega tu domain personalizado.

Enrutamiento personalizado de Webflow

Si usas Webflow para alojar tu sitio principal y quieres servir la documentación de Mintlify en /docs en el mismo dominio, tendrás que configurar un enrutamiento personalizado mediante Cloudflare Workers para redirigir mediante proxy todo el tráfico que no sea de docs hacia tu sitio principal.
Asegúrate de que tu sitio principal esté configurado en una landing page antes de desplegar este Worker, o los visitantes de tu sitio principal verán errores.
  1. En Webflow, configura una landing page para tu sitio principal, por ejemplo landing.yoursite.com. Esta será la página que verán los visitantes cuando entren a tu sitio.
  2. Despliega tu sitio principal en la landing page. Esto garantiza que tu sitio principal siga siendo accesible mientras configuras el Worker.
  3. Para evitar conflictos, actualiza cualquier URL absoluta en tu sitio principal para que sea relativa.
  4. En Cloudflare, selecciona Edit Code y añade el siguiente script en el código de tu Worker.
Reemplaza [SUBDOMAIN] por tu subdominio único, [YOUR_DOMAIN] por la URL base de tu sitio web, [LANDING_DOMAIN] por la URL de tu landing page y /docs por la subruta que desees si es diferente.
  addEventListener("fetch", (event) => {
  event.respondWith(handleRequest(event.request));
  });
  async function handleRequest(request) {
  try {
    const urlObject = new URL(request.url);
    
    // Si la solicitud es a una ruta de verificación de Vercel, permitir que pase
    if (urlObject.pathname.startsWith('/.well-known/')) {
      return await fetch(request);
    }
    
    // Si la solicitud es al subdirectorio de documentación
    if (/^\/docs/.test(urlObject.pathname)) {
      // Proxy a Mintlify
      const DOCS_URL = "[SUBDOMAIN].mintlify.dev";
      const CUSTOM_URL = "[YOUR_DOMAIN]";
      let url = new URL(request.url);
      url.hostname = DOCS_URL;
      let proxyRequest = new Request(url, request);
      proxyRequest.headers.set("Host", DOCS_URL);
      proxyRequest.headers.set("X-Forwarded-Host", CUSTOM_URL);
      proxyRequest.headers.set("X-Forwarded-Proto", "https");
      // Si se despliega en Vercel, preservar la IP del cliente
      proxyRequest.headers.set("CF-Connecting-IP", request.headers.get("CF-Connecting-IP"));
      return await fetch(proxyRequest);
    }
    // Enrutar todo lo demás al sitio principal
    const MAIN_SITE_URL = "[LANDING_DOMAIN]";
    if (MAIN_SITE_URL && MAIN_SITE_URL !== "[LANDING_DOMAIN]") {
      let mainSiteUrl = new URL(request.url);
      mainSiteUrl.hostname = MAIN_SITE_URL;
      return await fetch(mainSiteUrl, {
        method: request.method,
        headers: request.headers,
        body: request.body
      });
    }
  } catch (error) {
    // Si no se encuentra ninguna acción, servir la solicitud normal
    return await fetch(request);
  }
  }
  1. Selecciona Deploy y espera a que se propaguen los cambios.
Después de configurar tu DNS, los subdomains personalizados suelen estar disponibles en pocos minutos. La propagación de DNS a veces puede tardar de 1 a 4 horas y, en casos raros, hasta 48 horas. Si tu subdomain no está disponible de inmediato, espera antes de intentar solucionarlo.