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
- Múltiples servidores VPS en diferentes regiones.
- Dominio con DNS configurable.
- Contenido estático a distribuir.
- Herramientas: Nginx, Varnish, DNS, SSL.
Pasos a seguir
- 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
- 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;
}
}
- 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:
- Agregar dominio
- 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
- UsarCloudflare Page Rules o Workers para redirigir por geolocalización.
- 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
}
}
- 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
- 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:
Después habilitar el sitio:# /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;
sudo ln -s /etc/nginx/sites-available/cdn /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx - 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; } } - Configura DNS con GeoDNS (opcional pero recomendado): Usa un proveedor con GeoDNS como:
- Cloudflare (gratis con reglas).
- DNS Made Easy.
- Amazon Route 53.
- Agregar dominio
- 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
- UsarCloudflare Page Rules o Workers para redirigir por geolocalización.
- Automatizar sincronización de contenido usando "rsync" o "lsyncd" para mantener los archivos sincronizados:
O en tiempo real con "lsyncd":# En el origen rsync -avz /var/www/html/ user@edge-us:/var/www/html/
-- /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 } } - 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