Coloca tu documentación en una subcarpeta con Cloudflare
Sigue esta guía para alojar tu centro de ayuda de Ferndesk en una subcarpeta personalizada (como tudominio.com/ayuda) utilizando Cloudflare Workers como un proxy inverso.
Esto toma aproximadamente 10 minutos y requiere pocos conocimientos técnicos. Lo hemos redactado para que sea lo más fácil posible de seguir.
¿Tienes problemas? Contacta con [email protected] y te ayudaremos a completar tu configuración.
Requisitos previos
Un espacio de trabajo de Ferndesk con acceso de administrador
Un dominio de tu propiedad (que ya apunte a Cloudflare)
Familiaridad básica con el panel de control de Cloudflare
El plan gratuito de Cloudflare permite 100,000 solicitudes de Worker por día. Para centros de ayuda en producción con mucho tráfico, considera actualizar a un plan de pago con facturación por uso.
Paso 1: Configura la subcarpeta personalizada en Ferndesk
Primero, configura tu centro de ayuda de Ferndesk para usar una ruta de subcarpeta personalizada.
Inicia sesión en tu espacio de trabajo de Ferndesk, expande Help Center en la barra lateral izquierda y luego haz clic en Customize.
Haz clic en Custom domain
Selecciona la opción Custom sub-folder
Introduce tu dominio en el campo Domain (por ejemplo,
tudominio.com).Introduce la ruta de la subcarpeta deseada en el campo Subdirectory (por ejemplo,
/ayudao/docs).Haz clic en Configure sub-folder.
Una vez configurado, Ferndesk generará los registros DNS y la información del endpoint necesarios. Anota estos detalles; los utilizarás al configurar el proxy inverso.
Paso 2: Crea un Cloudflare Worker
Ahora crea un nuevo Cloudflare Worker que actuará como un proxy inverso.
Inicia sesión en tu panel de control de Cloudflare.
En BUILD → Compute & AI, navega a Workers & Pages en la barra lateral izquierda.
Haz clic en Create application en la esquina superior derecha.
En Start with Hello World!, haz clic en Get started.
Dale a tu Worker un nombre descriptivo como
ferndesk-reverse-proxyy haz clic en Deploy.
Paso 3: Configura las rutas del Worker
Configura la regla de enrutamiento que dirige el tráfico de tu subcarpeta personalizada al Cloudflare Worker.
En la configuración del Worker, navega a la pestaña Settings.
Desplázate hasta Domains & Routes y haz clic en Add.
Se abrirá una ventana modal. Selecciona la opción Route.
En el menú desplegable Zone, selecciona tu dominio (por ejemplo,
tudominio.com).En el campo Route, introduce el patrón para la ruta de tu subcarpeta. Usa
tudominio.com/ayudapara capturar todas las solicitudes a la ruta/ayuday sus subrutas.Deja Failure mode configurado como Fail closed (block) por seguridad.
Haz clic en Add route.
IMPORTANTE: Debes añadir una ruta separada para el directorio de recursos de Ferndesk _ferndesk. Sigue los pasos a continuación para completar tu configuración.
Paso 3b: Añadir la ruta _ferndesk
Desplázate hasta Domains & Routes y haz clic en Add.
Se abrirá una ventana modal. Selecciona la opción Route.
En el menú desplegable Zone, selecciona tu dominio (por ejemplo,
tudominio.com).En el campo Route, introduce el patrón para la ruta de tu subcarpeta. Usa
tudominio.com/_ferndeskpara capturar todas las solicitudes a la ruta/_ferndesky sus subrutas.Deja Failure mode configurado como Fail closed (block) por seguridad.
Haz clic en Add route.
Paso 4: Edita el código del Worker
Ahora actualiza el código del Worker para manejar la lógica del proxy inverso. El Worker interceptará las solicitudes a tu subcarpeta y las reenviará a Ferndesk.
Haz clic en Edit code (o accede al editor de código desde el panel del Worker).
Reemplaza todo el código de
worker.jscon el script del proxy inverso que aparece a continuación.// ONLY edit these const HELP_HOST = 'your-slug.hc.ferndesk.com'; // your Ferndesk help center host copied from your dashboard const PROXY_PREFIX = '/help'; // the path you want your help center to live on addEventListener('fetch', (event) => { event.respondWith(handleRequest(event.request)); }); async function handleRequest(request) { const originalUrl = new URL(request.url); if (originalUrl.pathname.endsWith('/') && originalUrl.pathname !== '/') { originalUrl.pathname = originalUrl.pathname.slice(0, -1); return Response.redirect(originalUrl.toString(), 301); } if ( originalUrl.pathname !== PROXY_PREFIX && !originalUrl.pathname.startsWith(`${PROXY_PREFIX}/`) && !originalUrl.pathname.startsWith('/_ferndesk/') ) { return fetch(request); } // Build the upstream request with the prefix removed const upstreamUrl = new URL(originalUrl.toString()); upstreamUrl.hostname = HELP_HOST; if (upstreamUrl.pathname === PROXY_PREFIX) { upstreamUrl.pathname = '/'; } else if (upstreamUrl.pathname.startsWith(`${PROXY_PREFIX}/`)) { upstreamUrl.pathname = upstreamUrl.pathname.slice(PROXY_PREFIX.length) || '/'; } const proxyRequest = new Request(upstreamUrl.toString(), request); // CRITICAL: Needed to resolve requests correctly proxyRequest.headers.set('X-Ferndesk-Base-Path', PROXY_PREFIX); proxyRequest.headers.set('X-Forwarded-Host', originalUrl.host); proxyRequest.headers.set('X-Ferndesk-Original-Host', originalUrl.host); return fetch(proxyRequest); }Reemplaza
HELP_HOSTcon el dominio real de Ferndesk proporcionado al configurar tu subcarpeta personalizada. ReemplazaPROXY_PREFIXsi estás usando una ruta de subcarpeta diferente (por ejemplo,/docsen lugar de/ayuda).Haz clic en Deploy para publicar tus cambios.
Paso 5: Verifica la configuración
Comprueba que tu centro de ayuda ahora sea accesible en la ruta de tu subcarpeta personalizada.
Abre una nueva pestaña en el navegador y dirígete a
https://tudominio.com/ayuda.Deberías ver tu centro de ayuda de Ferndesk cargado con tu imagen de marca.
Prueba algunas páginas haciendo clic en los enlaces para asegurar que la navegación funciona correctamente.
Si tu centro de ayuda se carga correctamente y muestra tu contenido, ¡el proxy inverso está funcionando bien! Tus clientes ahora pueden acceder a tu centro de ayuda en tu dominio personalizado.
¿Algo salió mal? Contáctanos en [email protected] y te ayudaremos a completar tu configuración.
Solución de problemas
Problema | Causa | Solución |
|---|---|---|
Error 404 Not Found al visitar la URL | La ruta no está configurada correctamente o el Worker no se ha desplegado | Verifica que el patrón de ruta coincida exactamente con tu dominio y la ruta de la subcarpeta. Comprueba que el Worker esté desplegado y activo en la sección Domains & Routes. |
Página en blanco o diseño roto | El dominio de Ferndesk en el código del Worker es incorrecto | Verifica que la variable |
El CSS y las imágenes no se cargan | Las URL relativas en la respuesta de Ferndesk no se están reescribiendo | Es posible que debas añadir la reescritura de encabezados de respuesta para manejar los recursos relativos. Contacta con el soporte de Ferndesk para una configuración de proxy avanzada. |
Solicitudes de Worker limitadas a 100,000/día | Se ha alcanzado el límite de velocidad del plan gratuito de Cloudflare | Actualiza tu plan de Cloudflare a facturación por uso para obtener solicitudes ilimitadas más allá del nivel gratuito. |