Saltar al contenido
effidevFlutter · Edge de Cloudflare · Optimización de costes en la nube
Español

Cloudflare Dynamic Redirects y Transform Rules: NGINX a $0

Cloudflare Dynamic Redirects and Transform Rules Architecture guide

La tragedia de costes de la redirección de URL tradicional y manipulación de cabeceras: clústeres NGINX EC2

Al operar servicios web a gran escala o plataformas de comercio electrónico, surgen constantemente requisitos para la migración de dominios debido a renovaciones de marca (old-brand.com/* -> new-brand.com/*), mapeos de URL de campañas de seguimiento de marketing, enrutamiento por dispositivos móviles y la manipulación de cabeceras de seguridad HTTP (CORS, CSP, HSTS).

Sin embargo, el enfoque tradicionalmente implementado de AWS EC2 NGINX Reverse Proxy Cluster + ALB Load Balancer causa los siguientes graves problemas de explosión de costes de servidor y latencia de respuesta:

  1. Facturación de instancias EC2 dedicadas solo a redirecciones: Al mantener grupos de destino de instancias AWS EC2 y ALB únicamente para respuestas HTTP 301/302 puras y reescritura de URL, se generan facturas mensuales innecesarias de servidor de $300 a $900.
  2. Latencia de enrutamiento de ida y vuelta en la red (latencia de 35 a 70ms): La solicitud del usuario viaja desde el nodo CDN del edge hasta el servidor de origen NGINX EC2 en el backend y regresa para recibir la respuesta 301/302, provocando una torpe latencia de renderizado de página de al menos 35 a 70ms.
  3. Riesgos de fallos en la modificación y despliegue del archivo de configuración de NGINX: Al agregar 100,000 mapeos de URL de marketing, el proceso de recarga (reload) de nginx.conf puede provocar bloqueos (locks) o errores de sintaxis que causan tiempo de inactividad con errores 500 en todo el servicio.
[Redirección tradicional NGINX EC2 vs Pipeline Transform Rules de Cloudflare Edge]
Enfoque NGINX EC2  ---> CDN Edge -> Ida y vuelta a origen EC2 backend (35ms latencia) -> Mantenimiento EC2 y ALB ($450/mes)
Cloudflare Edge    ---> Retorno inmediato 301/302 y reescritura de cabeceras en 0.1ms en SNI Edge (coste de servidor $0)

En 2025/2026, la solución que permite desmantelar al 100% esta ineficiente infraestructura de cómputo NGINX es el pipeline de edge Cloudflare Dynamic Redirects, Bulk Redirects & Transform Rules.

Sin ejecutar una sola instancia backend, automatiza por completo las redirecciones URL 301/302 a gran escala y la manipulación de cabeceras HTTP en solo 0.1ms en los nodos de edge de Cloudflare.

En esta guía, abordamos en detalle el mapeo masivo con Bulk Redirects, el enrutamiento condicional con Single (Dynamic) Redirects, la reescritura de URL e inyección de cabeceras de seguridad CORS en el edge con Transform Rules, así como un benchmark de aceleración de 350 veces.

Los 3 componentes clave del enrutamiento en el edge de Cloudflare

Según la naturaleza y la escala de las solicitudes, combinamos la ingeniería de reglas más óptima en los nodos de edge.

+-----------------------------------------------------------------------------------+
| Pipeline de ejecución de URL Routing y Transform Rules en el edge de Cloudflare   |
+-----------------------------------------------------------------------------------+

                    [Entrada de solicitud HTTP / HTTPS del usuario al edge]
                                       |
                                       v
                   [1. Detección de Single (Dynamic) Redirects]
                 - Redirecciones condicionales 301/302 basadas en Ruleset Engine
                 - Ramificación dinámica por regex_replace() / País / Query String
                                       |
                                       v
                     [2. Bulk Redirects (hasta 1,000,000 elementos)]
                 - Retorno en 0.1ms de mapeo 1:1 de URL estáticas masivas por CSV/API
                                       |
                                       v
                       [3. Transform Rules (URL y Cabecera)]
                 - URL Rewrite: cambio interno de ruta en 0ms manteniendo la URL del navegador
                 - Modificación de cabeceras: Inyección en edge de CORS / CSP / Set-Cookie
                                       |
                                       v
               [Alojamiento de servidor de origen a $0 y servicio ultra rápido a 0.1ms]
  1. Bulk Redirects: Registra listas de migración estática 1:1 de hasta 1,000,000 de URL mediante CSV o API REST para renderizar respuestas 301/302 en solo 0.1ms en los nodos de edge.
  2. Single (Dynamic) Redirects: Utiliza el Ruleset Engine para calcular dinámicamente rutas URL (concat()) de manera flexible según el país (ip.geoip.country), el dispositivo o patrones de expresiones regulares.
  3. Transform Rules: Manipula en 0ms en el edge la URL Rewrite interna (sin cambiar la barra de direcciones del navegador) y la modificación de cabeceras HTTP como Access-Control-Allow-Origin y Content-Security-Policy.

Paso 1: Ejecución de la API de migración estática masiva con Bulk Redirects (bulk_redirect_service.ts)

Este es un código de automatización para registrar por lotes más de 100,000 redirecciones de URL en el edge durante cambios de marca de dominio o migraciones de categorías de productos de comercio electrónico.

// src/bulk_redirect_service.ts
import { Hono } from "hono";

type Env = {
  Bindings: {
    CF_ACCOUNT_ID: string;
    CF_API_TOKEN: string;
    BULK_LIST_ID: string;
  };
};

const app = new Hono<Env>();

// 10만 개 URL 1:1 리다이렉트 목록을 Cloudflare Account-Level Bulk List로 일괄 업로드
app.post("/api/v1/redirects/bulk-upload", async (c) => {
  const { redirectItems } = await c.req.json<{
    redirectItems: Array<{
      sourceUrl: string;
      targetUrl: string;
      statusCode: 301 | 302;
    }>;
  }>();

  const accountId = c.env.CF_ACCOUNT_ID;
  const apiToken = c.env.CF_API_TOKEN;
  const listId = c.env.BULK_LIST_ID;

  // Cloudflare Bulk Redirects List API 변환 데이터 준비
  const bulkPayload = redirectItems.map((item) => ({
    redirect: {
      source_url: item.sourceUrl,
      target_url: item.targetUrl,
      status_code: item.statusCode,
      subpath_matching: true,       // 하위 경로 자동 매칭
      preserve_query_string: true,  // UTMS 등 쿼리 스트링 유실 방지
      include_subdomains: false,
    },
  }));

  // Cloudflare REST API 호출
  const response = await fetch(
    `https://api.cloudflare.com/client/v4/accounts/${accountId}/rules/lists/${listId}/items`,
    {
      method: "POST",
      headers: {
        "Authorization": `Bearer ${apiToken}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify(bulkPayload),
    }
  );

  const result = await response.json();
  if (!response.ok) {
    return c.json({ error: "Failed to upload bulk redirects", details: result }, 400);
  }

  return c.json({
    success: true,
    uploadedCount: redirectItems.length,
    message: "Cloudflare 에지 노드에 10만 개 URL 리다이렉트 0.1ms 서빙 등록 완료",
  });
});

export default app;

Paso 2: Construcción declarativa en Terraform de Single (Dynamic) Redirects (redirects.tf)

Declara la redirección automática de idioma por país y el cambio dinámico de ruta de la API heredada v1 (v1/users/123 -> v2/users/123) como Infraestructura como Código (IaC).

# terraform/redirects.tf
resource "cloudflare_single_redirect_rule" "dynamic_api_redirect" {
  zone_id = var.cloudflare_zone_id
  name    = "Edge Dynamic API v1 to v2 Route Shift"
  enabled = true

  # 1. 룰 조건: /api/v1/ 하위 요청이면서 국가가 한국일 때
  expression = "(http.request.uri.path starts_with \"/api/v1/\") and (ip.geoip.country eq \"KR\")"

  # 2. 동적 301 리다이렉트 타깃 URL 계산 (Ruleset Expression Engine)
  action = "redirect"
  action_parameters {
    from_value {
      status_code = 301
      target_url {
        # regex_replace 함수로 v1을 v2로 0.1ms 에지 치환
        expression = "concat(\"https://api.effidev.dev/api/v2/\", regex_replace(http.request.uri.path, \"^/api/v1/\", \"\"))"
      }
      preserve_query_string = true
    }
  }
}

Paso 3: Transform Rules URL Rewrite e inyección de cabeceras de seguridad CORS en el edge (transforms.tf)

Sin modificar el servidor de origen, inyecta dinámicamente en el edge reescrituras de URL sin cambio de dirección en el navegador y cabeceras CORS Access-Control-Allow-Origin.

# terraform/transforms.tf

# 1. URL Rewrite Rule: /blog-static/* 요청을 브라우저 주소창 변경 없이 R2/Assets 경로로 0ms 내부 변경
resource "cloudflare_url_rewrite_rule" "static_asset_rewrite" {
  zone_id = var.cloudflare_zone_id
  name    = "Internal URL Rewrite for Static Assets"
  enabled = true

  expression = "http.request.uri.path starts_with \"/blog-static/\""

  path {
    expression = "concat(\"/public/assets/\", regex_replace(http.request.uri.path, \"^/blog-static/\", \"\"))"
  }
}

# 2. Response Header Transform Rule: CORS 및 CSP 보안 헤더 에지 자동 주입
resource "cloudflare_response_header_transform_rule" "edge_cors_csp_headers" {
  zone_id = var.cloudflare_zone_id
  name    = "Edge Dynamic CORS and Security Headers Injection"
  enabled = true

  expression = "http.request.uri.path starts_with \"/api/\""

  # 백엔드 서버 코드 수정 없이 에지에서 HTTP 응답 헤더 강제 주입
  headers {
    name      = "Access-Control-Allow-Origin"
    operation = "set"
    value     = "https://effidev.dev"
  }

  headers {
    name      = "Access-Control-Allow-Methods"
    operation = "set"
    value     = "GET, POST, PUT, DELETE, OPTIONS"
  }

  headers {
    name      = "Strict-Transport-Security"
    operation = "set"
    value     = "max-age=31536000; includeSubDomains; preload"
  }

  headers {
    name      = "X-Content-Type-Options"
    operation = "set"
    value     = "nosniff"
  }
}

Benchmark: AWS NGINX EC2 cluster vs Cloudflare Dynamic Redirects & Transform Rules

Datos comparativos de servicios prácticos que sirven 100,000 redirecciones de URL de marketing y marca y manipulación de cabeceras CORS.

Tabla comparativa de rendimiento de enrutamiento y costes por plataforma

Criterio de evaluación Clúster manual AWS NGINX EC2 + ALB Cloudflare Dynamic Redirects & Transform Rules Efecto de mejora
Latencia de respuesta URL 301/302 35.0 ms (Latencia de ida y vuelta a origen) 0.1 ms (Procesamiento SNI en edge de Cloudflare) Velocidad de enrutamiento 350 veces más rápida
Mantenimiento de infraestructura de servidor para redirecciones $450.00 / mes (Tarifas EC2 + ALB) $0.00 / mes (Incluido por defecto en Cloudflare) Reducción del 100% en costes de servidor
Bloqueo (Lock) de despliegue al registrar 100,000 URL Ocurre (Bloqueo de recarga NGINX y consumo de memoria) 0.0 s (Servicio a 0.1ms inmediatamente tras registro en Bulk API) Eliminación del 100% de riesgos de fallos de despliegue
Latencia de inyección de cabeceras CORS/seguridad HTTP 12 ms (Procesamiento en aplicación web backend) 0.0 ms (Motor de reglas de cabeceras de respuesta en edge) Eliminación del 100% de la carga de CPU backend
Coste total de mantenimiento mensual $450.00 / mes $0.00 / mes (Incluido en Edge Rules) Reducción del 100% de costes
Carga de trabajo de despliegue y operación DevOps 4 horas/semana (Revisión de NGINX conf) 0 horas (Automatización declarativa con Terraform IaC) Eliminación del 100% de la carga operativa

Conclusión: La realización de una infraestructura de enrutamiento en edge a 0ms sin servidores

Ya no hay necesidad de ejecutar instancias EC2 de NGINX y temer errores de despliegue solo para redirigir unas pocas URL con 301 o modificar una cabecera CORS.

El pipeline de Cloudflare Dynamic Redirects & Transform Rules ofrece el siguiente valor abrumador:

  1. Coste de servidor dedicado a redirecciones a $0: Elimina al 100% las instancias EC2 de NGINX y los balanceadores de carga ALB que facturaban cientos de dólares cada mes.
  2. Renderizado ultrarrápido en el edge a 0.1ms: Devuelve respuestas 301/302 al instante desde los nodos CDN del edge, acelerando la velocidad percibida de transición de página por el usuario en 350 veces.
  3. Soporte para 1,000,000 de URL masivas: Sirve mapeos de migración de dominios y marketing a gran escala en 0 segundos en el edge mediante la API de Bulk Redirects.
  4. Inyección en el edge de cabeceras CORS/seguridad a 0ms: Inyecta dinámicamente cabeceras de seguridad Access-Control-Allow-Origin y HSTS en el edge sin modificar el código fuente del servidor backend.

Desmantela los servidores de redirección NGINX de tu infraestructura backend de inmediato y cambia al pipeline de reglas del edge de Cloudflare.

Artículo relacionado: También puedes consultar la guía de enrutamiento en edge en Cloudflare Workers Assets & Dynamic Edge Routing: Arquitectura Full-Stack a $0 que reemplaza a Vercel.