Ir al contenido

Descripción general

Este componente simula un nodo edge CDN para entornos de laboratorio y demostración. Representa el papel que desempeñan proveedores como Akamai, Cloudflare, Amazon CloudFront o Fastly en la arquitectura de red de un cliente: la capa de caché más cercana a los usuarios finales que se sitúa frente a un servidor de origen.

En arquitecturas de producción multifabricante, los clientes suelen combinar un CDN de terceros con F5 Distributed Cloud:

End User → CDN Edge (Akamai/Cloudflare/etc.) → F5 XC HTTP LB → Origin App

Este simulador reemplaza el CDN comercial por un nodo edge basado en NGINX para que la integración pueda demostrarse y probarse sin contratos con proveedores ni infraestructura de producción.

┌─────────┐ ┌──────────────────────┐ ┌─────────────────┐ ┌────────────┐
│ Client │────▶│ CDN Edge (NGINX) │────▶│ F5 XC HTTP LB │────▶│ Origin App │
│ │ │ Ubuntu 24.04 Azure │ │ (Origin Server) │ │ │
└─────────┘ │ - TLS termination │ └─────────────────┘ └────────────┘
│ - Disk-based cache │
│ - X-Cache-Status │
└──────────────────────┘

El nodo edge NGINX:

  • Termina TLS en el edge (autofirmado o Let’s Encrypt)
  • Almacena respuestas en caché en disco mediante proxy_cache_path
  • Reenvía los fallos de caché a un servidor de origen configurable (el VIP del balanceador de carga HTTP de F5 XC)
  • Reporta el estado de la caché mediante la cabecera de respuesta X-Cache-Status (HIT, MISS, BYPASS, EXPIRED)
Función CDNImplementación en NGINX
Caché en el edgeproxy_cache con almacenamiento en disco
Generación de clave de cachéproxy_cache_key basada en esquema, host y URI
Extracción desde el origenproxy_pass al balanceador de carga HTTP de F5 XC
Terminación TLSDirectiva ssl_certificate de NGINX
Respeto a Cache-Controlproxy_cache_valid con reenvío de cabeceras del origen
Reporte del estado de cachéadd_header X-Cache-Status $upstream_cache_status
Endpoint de saludLocalización /health que devuelve 200 OK

Endpoints y comportamiento de solicitudes/respuestas

Sección titulada «Endpoints y comportamiento de solicitudes/respuestas»
GET /health

Respuesta (200 OK, Content-Type: application/json):

{
"status": "healthy",
"component": "cdn-edge",
"engine": "nginx",
"vendor_profiles": ["akamai", "cloudflare", "cloudfront", "fastly", "azure-front-door"]
}
GET /<any-path>

Cabeceras de solicitud inyectadas hacia el origen (más de 67 cabeceras de 5 proveedores):

CategoríaCabeceras añadidas
IP del clienteTrue-Client-IP, CF-Connecting-IP, Fastly-Client-IP, X-Azure-ClientIP, CloudFront-Viewer-Address, X-Forwarded-For, X-Real-IP
GeolocalizaciónX-Akamai-Edgescape (compuesta), CF-IPCountry, cf-ipcity, cf-iplatitude/longitude, CloudFront-Viewer-Country/City/Latitude/Longitude, X-Geo-Country-Code/City/Region
Detección de dispositivoCloudFront-Is-Mobile-Viewer, CloudFront-Is-Desktop-Viewer, CloudFront-Is-Tablet-Viewer, X-Akamai-Device-Characteristics
TLS/Huella digitalCloudFront-Viewer-TLS, cf-ja3-hash, cf-ja4, CloudFront-Viewer-JA3-Fingerprint
Detección de botscf-bot-score (85 = probablemente humano), cf-verified-bot
Trazado de solicitudesCf-Ray, X-Akamai-Request-ID, X-Amz-Cf-Id, X-Azure-Ref
Identidad del edgeX-CDN-Edge, X-CDN-POP, X-Served-By, Fastly-FF, X-Azure-FDID
EstándarVia, Forwarded, CDN-Loop, X-Forwarded-Proto/Host/Port

Cabeceras de respuesta añadidas a cada respuesta proxificada:

CabeceraValoresPropósito
X-Cache-StatusHIT, MISS, BYPASS, EXPIRED, STALEComportamiento de la caché para esta solicitud
X-CDN-Edgecdn-simulatorIdentifica este nodo edge
X-CDN-POPSJCCódigo IATA del punto de presencia simulado
X-Served-Bycache-sjc3120-SJCNodo de caché simulado en formato Fastly
X-Request-IDUUID (por solicitud)Identificador único de solicitud
  • Primera solicitud a cualquier ruta: X-Cache-Status: MISS (obtenida desde el origen y almacenada en caché)
  • Solicitudes idénticas posteriores: X-Cache-Status: HIT (servida desde la caché en disco)
  • Clave de caché: $scheme$host$request_uri (esquema + nombre de host + ruta completa + cadena de consulta)
  • TTL de caché: 10 minutos para 200/301/302, 1 minuto para 404
  • Servicio desde caché obsoleta: devuelve contenido en caché ante errores del origen (500/502/503/504)
Método de accesoComando/Ruta
SSHssh azureuser@<PUBLIC_IP>
Configuración de NGINX/etc/nginx/conf.d/cdn-edge.conf
Registros de NGINX/var/log/nginx/access.log y /var/log/nginx/error.log
Directorio de caché/var/cache/nginx/cdn/
Registro de cloud-init/var/log/cloud-init-output.log

Este es uno de los elementos de un entorno de laboratorio más amplio. Cada componente es autónomo y se despliega de forma independiente:

  • Este componente proporciona el edge CDN (NGINX en una VM de Azure)
  • Otros componentes proporcionan la aplicación de origen, la configuración de F5 XC, DNS, políticas WAF, etc.

El operador humano añade componentes de uno en uno. La documentación de cada componente está redactada para que un asistente de IA pueda leerla y desplegar la infraestructura de forma autónoma.

NGINX fue seleccionado como motor de simulación CDN porque:

  1. Producto F5 — F5 adquirió NGINX Inc. en 2019; forma parte del portafolio de F5
  2. Probado en la industria — Cloudflare ejecutó su CDN completo sobre NGINX durante más de una década antes de migrar a Pingora; Netflix utiliza NGINX para su CDN Open Connect
  3. Proceso único — gestiona la terminación TLS y el almacenamiento en caché en un único binario, a diferencia de Varnish, que requiere un proxy TLS separado
  4. Despliegue sencilloapt install nginx en Ubuntu 24.04; dos directivas habilitan el almacenamiento en caché
  5. Bien documentado — extensa documentación oficial sobre caché de contenido y configuración de proxy inverso