- Inicio
- Simulador CDN
- Integrar con el Servidor de Origen
Integrar con el Servidor de Origen
Esta página cubre dos etapas de integración:
- Integración directa — el borde CDN reenvía directamente al servidor de origen (pruebas de línea base)
- Inserción de F5 XC — balanceador de carga HTTP de F5 XC insertado entre el CDN y el origen (demo de seguridad)
Comience con la integración directa para establecer la línea base y luego inserte F5 XC cuando esté listo.
Referencia del Servidor de Origen
Sección titulada «Referencia del Servidor de Origen»El componente de laboratorio origin-server proporciona aplicaciones web vulnerables para pruebas de seguridad.
| Propiedad | Valor |
|---|---|
| Documentación | f5-sales-demo.github.io/origin-server |
| Repositorio | github.com/f5-sales-demo/origin-server |
| Puerto predeterminado | 80 |
| Verificación de estado | GET /health |
Aplicaciones Disponibles
Sección titulada «Aplicaciones Disponibles»Obtenga el catálogo de aplicaciones actual desde el manifiesto publicado del servidor de origen:
MANIFEST_URL=$(curl -sf https://api.github.com/repos/f5-sales-demo/origin-server/releases/latest \ | python3 -c "import sys,json; assets=json.load(sys.stdin).get('assets',[]); print(next((a['browser_download_url'] for a in assets if a['name']=='manifest.json'),''))")curl -sf "$MANIFEST_URL" | python3 -m json.toolSi aún no existe ninguna versión, utilice directamente el código fuente del repositorio:
curl -sf https://raw.githubusercontent.com/f5-sales-demo/origin-server/main/manifest.json | python3 -m json.toolEl manifiesto lista todas las rutas de aplicación, verificaciones de estado, imágenes de contenedor y asignaciones de características de demostración.
Rutas de Aplicación
Sección titulada «Rutas de Aplicación»| Ruta | Aplicación | Características de demostración |
|---|---|---|
/ | Página de inicio | — |
/health | Verificación de estado | — |
/juice-shop/ | OWASP Juice Shop | WAF, Defensa Bot, Seguridad de API |
/dvwa/ | DVWA | WAF, Defensa Bot |
/vampi/ | VAmPI | Seguridad de API |
/httpbin/ | httpbin | Diagnósticos |
/whoami/ | whoami | Verificación de encabezados |
/csd-demo/ | CSD Demo | Defensa del lado del cliente |
Etapa 1: Integración Directa (Línea Base)
Sección titulada «Etapa 1: Integración Directa (Línea Base)»┌──────────┐ ┌──────────────────────┐ ┌─────────────────────┐│ Client │────▶│ CDN Edge (NGINX) │────▶│ Origin Server ││ │ │ 20.65.90.112 │ │ 20.12.78.159 │└──────────┘ │ 67+ CDN headers │ │ Juice Shop, DVWA, │ │ Disk cache │ │ VAmPI, httpbin, │ └──────────────────────┘ │ whoami, CSD Demo │ └─────────────────────┘Configurar el Origen
Sección titulada «Configurar el Origen»Establezca la IP del servidor de origen en la configuración NGINX del borde CDN:
ssh azureuser@<CDN_EDGE_IP>sudo sed -i 's|proxy_pass .*;|proxy_pass http://<ORIGIN_IP>;|' /etc/nginx/conf.d/cdn-edge.confsudo rm -rf /var/cache/nginx/cdn/*sudo nginx -t && sudo systemctl reload nginxO configúrelo en el momento del despliegue de Terraform mediante terraform.tfvars:
origin_server = "http://<ORIGIN_IP>"Verificar Todas las Aplicaciones
Sección titulada «Verificar Todas las Aplicaciones»Pruebe cada aplicación del origen a través del CDN:
CDN=<CDN_EDGE_IP>
# Health check (CDN local)curl -sf "http://$CDN/health" | python3 -m json.tool
# Landing pagecurl -sf -o /dev/null -w "/ : HTTP %{http_code}\n" "http://$CDN/"
# Juice Shopcurl -sf -o /dev/null -w "/juice-shop/ : HTTP %{http_code}\n" "http://$CDN/juice-shop/"
# DVWA (follows redirect to login)curl -sf -o /dev/null -w "/dvwa/ : HTTP %{http_code}\n" -L "http://$CDN/dvwa/"
# VAmPI APIcurl -sf "http://$CDN/vampi/users/v1" | python3 -m json.tool | head -5
# httpbin headers (shows CDN headers in JSON)curl -sf "http://$CDN/httpbin/headers" | python3 -m json.tool | head -10
# whoami (shows ALL headers the origin receives)curl -sf "http://$CDN/whoami/"
# CSD Democurl -sf -o /dev/null -w "/csd-demo/ : HTTP %{http_code}\n" "http://$CDN/csd-demo/"Todas las rutas deben devolver HTTP 200 (DVWA devuelve 302 y luego 200 al seguir la redirección).
Verificar los Encabezados CDN en el Origen
Sección titulada «Verificar los Encabezados CDN en el Origen»El endpoint /whoami/ muestra cada encabezado que recibe el origen. Cuando se accede a través del CDN, muestra los 67+ encabezados de proveedor:
curl -sf "http://$CDN/whoami/"Verifique que estos encabezados clave estén presentes:
| Proveedor | Encabezado | Valor esperado |
|---|---|---|
| Estándar | X-Forwarded-For | <your_ip>, <cdn_edge_ip> |
| Akamai | True-Client-Ip | <your_ip> |
| Cloudflare | Cf-Connecting-Ip | <your_ip> |
| CloudFront | Cloudfront-Viewer-Country | US |
| Fastly | Fastly-Client-Ip | <your_ip> |
| Azure FD | X-Azure-Clientip | <your_ip> |
Correlación de Registros
Sección titulada «Correlación de Registros»Compare los registros de acceso en ambos servidores para verificar el flujo de tráfico:
# CDN edge log — shows your client IP as sourcessh azureuser@<CDN_EDGE_IP> "sudo tail -5 /var/log/nginx/access.log"
# Origin log — shows CDN edge IP as sourcessh azureuser@<ORIGIN_IP> "sudo tail -5 /var/log/nginx/access.log"El registro del origen debe mostrar la IP del borde CDN como cliente conectado, mientras que la IP real del cliente se transporta en X-Forwarded-For y en los encabezados específicos de cada proveedor.
Comportamiento de Caché
Sección titulada «Comportamiento de Caché»# First request — MISS (fetched from origin)curl -s -I "http://$CDN/whoami/" | grep X-Cache-Status
# Second request — HIT (served from CDN cache)curl -s -I "http://$CDN/whoami/" | grep X-Cache-StatusEtapa 2: Inserción de F5 XC (Demo de Seguridad)
Sección titulada «Etapa 2: Inserción de F5 XC (Demo de Seguridad)»Después de las pruebas de línea base, inserte un balanceador de carga HTTP de F5 XC entre el CDN y el origen:
┌──────────┐ ┌────────────────┐ ┌──────────────────┐ ┌─────────────────┐│ Client │────▶│ CDN Edge │────▶│ F5 XC HTTP LB │────▶│ Origin Server ││ │ │ (NGINX) │ │ WAF + Bot + API │ │ │└──────────┘ └────────────────┘ └──────────────────┘ └─────────────────┘- Cree el balanceador de carga HTTP de F5 XC con el servidor de origen en su pool de origen
- Actualice el borde CDN para que apunte al VIP de F5 XC en lugar de al origen directamente:
ssh azureuser@<CDN_EDGE_IP>sudo sed -i 's|proxy_pass .*;|proxy_pass https://<F5XC_LB_VIP>;|' /etc/nginx/conf.d/cdn-edge.confsudo rm -rf /var/cache/nginx/cdn/*sudo nginx -t && sudo systemctl reload nginx- Verifique la aplicación del WAF a través de la cadena completa:
# SQL injection through CDN → F5 XC WAF should blockcurl -I "http://$CDN/dvwa/vulnerabilities/sqli/?id=%27+OR+1%3D1--"
# Normal request should passcurl -sf -o /dev/null -w "%{http_code}" "http://$CDN/juice-shop/"- Configure el Encabezado de IP de Cliente de Confianza en F5 XC para leer la IP real del cliente desde los encabezados CDN (por ejemplo,
True-Client-IPpara la simulación de Akamai,CF-Connecting-IPpara la simulación de Cloudflare)
Arquitectura de Múltiples Componentes
Sección titulada «Arquitectura de Múltiples Componentes»| Componente | Repositorio | Propósito |
|---|---|---|
| CDN Edge (este) | cdn-simulator | Caché, encabezados de proveedor |
| Servidor de Origen | origin-server | Aplicaciones web vulnerables |
| Configuración F5 XC | Varios (waf, api-protection, bot-*, etc.) | Políticas de seguridad |
Cada componente publica documentación que los asistentes de IA leen para desplegar la infraestructura. El servidor de origen publica un manifiesto de endpoints como artefacto de GitHub Release que lista todas las rutas de aplicación y verificaciones de estado.