- Inicio
- Simulador CDN
- Verificar
Verificar
Después del despliegue, ejecute estas comprobaciones para confirmar que el nodo edge del Simulador CDN funciona correctamente. Espere 2-3 minutos después de terraform apply para que cloud-init termine de instalar NGINX.
Verificación de salud
Sección titulada «Verificación de salud»Verifique que NGINX esté en ejecución y respondiendo:
curl -s "http://<PUBLIC_IP>/health" | jq .Salida esperada:
{ "status": "healthy", "component": "cdn-edge", "engine": "nginx", "vendor_profiles": [ "akamai", "cloudflare", "cloudfront", "fastly", "azure-front-door" ]}Si utiliza las salidas de Terraform:
curl -s "$(terraform output -raw health_check_url)" | jq .Error de caché (primera solicitud)
Sección titulada «Error de caché (primera solicitud)»La primera solicitud a cualquier ruta será un error de caché — el edge obtiene el contenido desde el origen:
curl -I "http://<PUBLIC_IP>/"Busque estos encabezados en la respuesta:
X-Cache-Status: MISSX-CDN-Edge: cdn-simulatorMISS significa que el contenido no estaba en caché y fue obtenido del servidor de origen.
Acierto de caché (solicitud posterior)
Sección titulada «Acierto de caché (solicitud posterior)»Repita la misma solicitud inmediatamente:
curl -I "http://<PUBLIC_IP>/"Encabezados esperados:
X-Cache-Status: HITX-CDN-Edge: cdn-simulatorHIT confirma que la respuesta fue servida desde la caché en disco de NGINX sin contactar al origen.
Inspección del directorio de caché
Sección titulada «Inspección del directorio de caché»Conéctese por SSH a la VM para verificar que el contenido en caché existe en disco:
ssh azureuser@<PUBLIC_IP>
# Check cache directory has contentsudo find /var/cache/nginx/cdn -type f | head -20
# Check cache sizesudo du -sh /var/cache/nginx/cdnEstado de NGINX
Sección titulada «Estado de NGINX»Verifique que NGINX esté en ejecución y que la configuración sea válida:
ssh azureuser@<PUBLIC_IP>
# Check service statussudo systemctl status nginx
# Validate configurationsudo nginx -t
# View active connections (if stub_status is enabled)curl -s http://localhost/healthConectividad al origen
Sección titulada «Conectividad al origen»Verifique que el nodo edge pueda alcanzar el servidor de origen:
ssh azureuser@<PUBLIC_IP>
# Test connectivity to origin (replace with your origin URL)curl -I "https://your-origin.example.com/"Si esto falla, verifique:
- Que la variable
origin_serversea correcta en la configuración de Terraform - Que el servidor de origen permita conexiones entrantes desde la IP pública del nodo edge
- Que la resolución DNS funcione desde la VM (
nslookup your-origin.example.com)
Progreso de Cloud-Init
Sección titulada «Progreso de Cloud-Init»Supervise el progreso del aprovisionamiento a través del registro de cloud-init:
ssh azureuser@<PUBLIC_IP> "tail -f /var/log/cloud-init-progress.log"Fases esperadas: [init], [nic] (detección dinámica de NIC), [complete].
Si cloud-init reporta errores:
ssh azureuser@<PUBLIC_IP> "sudo cloud-init status --long"Prueba de extremo a extremo
Sección titulada «Prueba de extremo a extremo»Ejecute un ciclo completo de solicitudes y verifique la cadena de respuestas:
# First request — MISS (fetches from origin)echo "=== Request 1 (expect MISS) ==="curl -s -o /dev/null -w "HTTP %{http_code} | Cache: %{header:X-Cache-Status}\n" "http://<PUBLIC_IP>/test-path"
# Second request — HIT (served from cache)echo "=== Request 2 (expect HIT) ==="curl -s -o /dev/null -w "HTTP %{http_code} | Cache: %{header:X-Cache-Status}\n" "http://<PUBLIC_IP>/test-path"Salida esperada:
=== Request 1 (expect MISS) ===HTTP 200 | Cache: MISS=== Request 2 (expect HIT) ===HTTP 200 | Cache: HITVerificación de encabezados de proveedores CDN
Sección titulada «Verificación de encabezados de proveedores CDN»Verifique que todos los encabezados de proveedores CDN estén siendo inyectados solicitando la ruta /headers (cuando se utiliza httpbin.org como origen):
curl -s "http://<PUBLIC_IP>/headers" | python3 -m json.toolLa respuesta esperada incluye encabezados de los cinco proveedores:
{ "headers": { "True-Client-Ip": "<YOUR_CLIENT_IP>", "Cf-Connecting-Ip": "<YOUR_CLIENT_IP>", "Cf-Ipcountry": "US", "Cf-Ray": "<request_id>-SJC", "Cf-Bot-Score": "85", "Cf-Ja3-Hash": "e7d705a3286e19ea42f587b344ee6865", "Cloudfront-Viewer-Country": "US", "Cloudfront-Viewer-City": "San Jose", "Cloudfront-Is-Desktop-Viewer": "true", "Cloudfront-Is-Mobile-Viewer": "false", "Fastly-Client-Ip": "<YOUR_CLIENT_IP>", "X-Akamai-Edgescape": "georegion=263,country_code=US,...", "X-Azure-Clientip": "<YOUR_CLIENT_IP>", "X-Azure-Fdid": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1", "X-Geo-Country-Code": "US" }}Prueba de detección de dispositivo
Sección titulada «Prueba de detección de dispositivo»Pruebe con un User-Agent móvil para verificar que los encabezados de detección de dispositivo cambien:
curl -s "http://<PUBLIC_IP>/headers?device=mobile" \ -H "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" \ | python3 -m json.tool | grep -E "Is-Mobile|Is-Desktop|is_mobile"Esperado:
"Cloudfront-Is-Desktop-Viewer": "false","Cloudfront-Is-Mobile-Viewer": "true",Solución de problemas
Sección titulada «Solución de problemas»NGINX no está en ejecución
Sección titulada «NGINX no está en ejecución»ssh azureuser@<PUBLIC_IP>sudo systemctl status nginxsudo journalctl -u nginx --no-pager -n 50Cloud-init no ha terminado
Sección titulada «Cloud-init no ha terminado»Después de terraform apply, cloud-init tarda 2-3 minutos. Verifique el progreso:
ssh azureuser@<PUBLIC_IP>sudo cloud-init statussudo tail -f /var/log/cloud-init-output.logLa caché siempre muestra MISS
Sección titulada «La caché siempre muestra MISS»- Verifique que el origen devuelva códigos de respuesta almacenables en caché (200, 301, 302)
- Compruebe que el origen no envíe encabezados
Cache-Control: no-cacheono-store - Revise los registros de errores de NGINX:
sudo tail -f /var/log/nginx/error.log
Conexión rechazada en el puerto 80/443
Sección titulada «Conexión rechazada en el puerto 80/443»- Verifique que las reglas de NSG estén aplicadas:
az network nsg rule list --nsg-name "$(terraform output -raw nsg_name)" --resource-group "$(terraform output -raw resource_group_name)" -o table - Verifique que NGINX esté escuchando:
ssh azureuser@<PUBLIC_IP> "sudo ss -tlnp | grep nginx"