CÓMO CREAR UN SERVIDOR CDN: GUÍA PASO A PASO

En mi post anterior sobre servidores CDN, se explica qué son, cómo funcionan y sus beneficios. Ahora, en este artículo, se explica como construir un servidor CDN propio desde cero. Crear un servidor CDN básico es factible para sitios pequeños o medianos, pero para audiencias globales.
Crear un servidor CDN (Content Delivery Network) desde cero implica distribuir contenido estático (imágenes, CSS, JS, videos, etc.) a través de múltiples servidores en diferentes ubicaciones geográficas para reducir latencia y mejorar rendimiento.

Crear tu propio CDN casero

  1. Múltiples servidores VPS en diferentes regiones.
  2. Dominio con DNS configurable.
  3. Contenido estático a distribuir.
  4. Herramientas: Nginx, Varnish, DNS, SSL.

Pasos a seguir

  1. Preparar los servidores vps contratados: Contratar servidores vps en cada ubicación. En este punto hay que saber donde se tiene más tráfico para crear los vps en esos países o regiones. Instalar Nginx y configurarlo como Proxy Cache:

    # /etc/nginx/sites-available/cdn
    server {
        listen 80;
        server_name cdn.tudominio.com;
    
        location / {
       proxy_cache my_cache;
       proxy_cache_valid 200 1d;
       proxy_pass http://origin.tudominio.com;  # Servidor origen
       proxy_set_header Host origin.tudominio.com;
       add_header X-Cache-Status $upstream_cache_status;
        }
    }
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
    
    Después habilitar el sitio:

    sudo ln -s /etc/nginx/sites-available/cdn /etc/nginx/sites-enabled/
    sudo nginx -t && sudo systemctl reload nginx
    
  2. Configurar el servidor de origen: Este es el servidor principal con el contenido original.

    server {
        listen 80;
        server_name origin.tudominio.com;
    
        root /var/www/html;
        index index.html;
    
        location / {
       try_files $uri $uri/ =404;
        }
    }
    
  3. Configura DNS con GeoDNS (opcional pero recomendado): Usa un proveedor con GeoDNS como:
    • Cloudflare (gratis con reglas).
    • DNS Made Easy.
    • Amazon Route 53.
    Ejemplo con Cloudfare:
    1. Agregar dominio
    2. Crea registros A para cada vps contratado en las diferentes regiones Estados Unidos y Europa como ejemplo:
      • us.cdn.tudominio.com → IP del servidor en EE.UU.
      • eu.cdn.tudominio.com → IP del servidor en Europa
    3. UsarCloudflare Page Rules o Workers para redirigir por geolocalización.
  4. Automatizar sincronización de contenido usando "rsync" o "lsyncd" para mantener los archivos sincronizados:

    # En el origen
    rsync -avz /var/www/html/ user@edge-us:/var/www/html/
    
    O en tiempo real con "lsyncd":

    -- /etc/lsyncd/lsyncd.conf.lua
    settings {
        logfile = "/var/log/lsyncd.log"
    }
    
    sync {
        default.rsync,
        source = "/var/www/html/",
        target = "user@edge-us:/var/www/html/",
        rsync = {
       archive = true,
       compress = true
        }
    }
    
  5. añadir SSL, certificados digitales. Usando Let's Encrypt en todos los servidores:

    sudo apt install certbot python3-certbot-nginx
    sudo certbot --nginx -d cdn.tudominio.com