Zonas y DNS: dónde encaja el Worker
Lo mínimo imprescindible sobre zonas, registros proxied frente a DNS-only y el registro sin origen, para entender cómo una petición entra al edge y por qué tu Worker puede atenderla.
Todas las lecciones anteriores dependían de una condición silenciosa: que el tráfico del hostname entre a Cloudflare. Esa condición vive en el DNS. Una zona, un registro y un interruptor —la nube naranja— deciden si tu hostname circula por el edge programable o va directo a un servidor ajeno. Esta lección te da el modelo mínimo pero correcto de zonas y DNS para que el enrutado de Workers deje de tener puntos ciegos.
- Definir qué es una zona y cómo tu dominio pasa a Cloudflare.
- Distinguir un registro proxied de uno DNS-only y sus efectos.
- Entender el registro sin origen y por qué existe.
- Situar al Worker en el flujo completo de una petición.
Qué es una zona
Una zona es un dominio cuyo DNS gestiona Cloudflare. Es la unidad administrativa sobre la que se apoyan casi todas las features: routing, caché, WAF y, por supuesto, los Workers.
Para crearla, al “añadir un sitio” apuntas los nameservers de tu registrador a Cloudflare —el setup completo—, o delegas solo un hostname vía CNAME —el setup parcial—. A partir de ahí, Cloudflare es autoritativo para ese nombre y puede, además de responder DNS, interponerse como proxy inverso.
Setup completo
Mueves los nameservers a Cloudflare y le entregas la zona entera. Desbloquea todas las features y es el camino por defecto.
Setup parcial (CNAME)
Delegas solo los hostnames que apuntas, sin mover el DNS completo. Útil cuando otro proveedor gestiona el dominio.
Sin zona no hay edge
Sin una zona activa no existen ni custom domains ni routes: no hay dónde colgar el Worker.
Proxied o DNS-only: la nube naranja
Cada registro A, AAAA o CNAME tiene un interruptor de estado de proxy. Es la decisión más importante del DNS en Cloudflare, y la que más fallos de enrutado silencia.
Proxied (nube naranja)
El tráfico pasa a través de Cloudflare. La IP publicada es anycast de Cloudflare, y el edge puede aplicar caché, WAF y Workers. Es la única forma de que tu Worker vea la petición.
DNS-only (nube gris)
Cloudflare solo responde la consulta de DNS con la IP real. El tráfico va directo al origen: ni caché, ni WAF, ni Workers. El edge no llega a ver el HTTP.
La regla práctica
Para que una route o un custom domain funcionen, el hostname tiene que estar proxied. Si dudas de por qué un Worker no corre, mira primero el color de la nube.
Certificados
Al estar proxied, Cloudflare termina el TLS con su certificado —Universal SSL a nivel de zona—, y los custom domains emiten el suyo de forma automática.
El estado de proxy no es un ajuste de rendimiento menor: es lo que decide si tu hostname vive dentro o fuera de la plataforma. Un registro gris convierte a Cloudflare en un simple directorio telefónico; uno naranja lo convierte en el intermediario de cada petición.
Puedes verificar el estado desde la terminal, sin abrir el panel:
# Que IP publica el hostname
dig +short app.ejemplo.com
# 104.16.x.x -> rango de Cloudflare: esta proxied (nube naranja)
# 203.0.113.5 -> IP de tu servidor: esta en DNS-only (nube gris)
Si la respuesta de dig cae en los rangos de Cloudflare, el hostname está proxied y tus Workers pueden actuar. Si ves la IP real de tu servidor, el registro es DNS-only y ningún Worker se ejecutará sobre él, por perfecta que sea tu route.
El registro sin origen
Y si tu Worker ES la aplicación y no hay servidor detrás, no tienes una IP real que poner en el registro. La solución idiomática es el registro sin origen (originless): un registro proxied que apunta a una dirección reservada de documentación, AAAA a 100:: o A a 192.0.2.0.
Como está proxied, Cloudflare intercepta la petición en el edge y tu Worker la atiende; la dirección reservada nunca recibe tráfico. Solo existe para que el registro sea válido y viaje por la nube naranja.
# Registro sin origen: proxied, no apunta a nada real
# Tipo Nombre Contenido Proxy
# AAAA app.ejemplo.com 100:: Proxied
# A app.ejemplo.com 192.0.2.0 Proxied
Un custom domain crea este registro proxied por ti. El registro sin origen manual es sobre todo cosa de routes, cuando eres tú quien gestiona el DNS del hostname que quieres interceptar.
El Worker en el flujo
Con esto se cierra el círculo del nivel. El estado de proxy del registro es lo primero que decide el destino de una petición, mucho antes que cualquier route o línea de código:
flowchart TD
A[Navegador resuelve el hostname] --> B{Registro proxied}
B -->|Si nube naranja| C[IP anycast de Cloudflare]
C --> D[En el edge actuan cache WAF y Workers]
D --> E[Tu Worker atiende la peticion]
B -->|No nube gris| F[IP real del origen]
F --> G[Trafico directo y Cloudflare no ve el HTTP]Fíjate en la asimetría: la rama naranja llega a tu Worker; la gris ni siquiera roza el edge. Cambiar una nube de gris a naranja no toca tu código, pero es la diferencia entre que ese código exista o no para el mundo.
Todo el nivel de routing se sostiene sobre un hecho que el DNS decide en silencio: un hostname solo es programable si su tráfico atraviesa Cloudflare, y eso lo determina el estado de proxy del registro, no tu Worker. En modo DNS-only, Cloudflare actúa como un servidor de nombres cualquiera: traduce el hostname a una IP y se aparta; el navegador habla directo con tu origen y ni la route más perfecta ni el custom domain más elegante se evalúan, porque el HTTP jamás pasa por el edge. Al activar la nube naranja inviertes esa relación: Cloudflare publica su propia IP anycast, se convierte en proxy inverso y, de golpe, tu hostname vive dentro de una plataforma programable donde caché, WAF y Workers son capas que puedes componer. El registro sin origen lleva esta idea al extremo lógico: un registro que no apunta a nada real, cuya única función es existir y estar proxied para que el edge, y tu Worker, tomen el control absoluto del hostname. Por eso el primer diagnóstico ante cualquier fallo de enrutado no es leer código: es mirar el color de la nube. Si es gris, no hay edge; si no hay edge, no hay Worker. La programabilidad del hostname empieza en el DNS, no en tu script.
- Revisa un registro proxied y uno DNS-only en una zona y anota qué features aplican a cada uno.
- Explica por qué una route sobre un registro DNS-only nunca ejecuta el Worker.
- Razona qué hace el registro sin origen
AAAA 100::y por qué debe estar proxied. - Con
dig +short, distingue un hostname proxied de uno DNS-only por la IP que devuelve.