Configuración de Cloudflare CDN para VPS
Cloudflare actúa como capa intermedia entre Internet y tu VPS, ofreciendo CDN, protección DDoS, SSL automático y optimización de rendimiento sin coste adicional en su plan gratuito. Configurar Cloudflare para tu servidor VPS mejora los tiempos de carga globales, oculta la IP real del servidor y añade una capa de seguridad WAF que bloquea amenazas antes de que lleguen a tu infraestructura. Esta guía cubre la configuración DNS, los modos SSL, las reglas de caché y las opciones de seguridad más importantes.
Requisitos Previos
- Dominio registrado (en cualquier registrador)
- Cuenta de Cloudflare (el plan gratuito es suficiente para empezar)
- VPS con un servidor web configurado (Nginx o Apache)
- Acceso al panel de administración del dominio para cambiar los nameservers
Configuración DNS en Cloudflare
Añadir el dominio a Cloudflare
- Accede a dash.cloudflare.com y haz clic en Add a Site
- Introduce tu dominio y selecciona el plan (Free es suficiente)
- Cloudflare escaneará automáticamente los registros DNS existentes
- Revisa los registros importados y añade los que falten
Registros DNS esenciales
En el panel DNS de Cloudflare, configura los siguientes registros:
| Tipo | Nombre | Contenido | Proxy |
|---|---|---|---|
| A | @ | IP_DE_TU_VPS | Activado (nube naranja) |
| A | www | IP_DE_TU_VPS | Activado (nube naranja) |
| CNAME | IP_DE_TU_VPS | Desactivado (nube gris) |
Importante: Los registros de correo (MX, mail) deben tener el proxy desactivado (nube gris) para evitar interferencias con el tráfico de email.
Cambiar los nameservers
Cloudflare te proporcionará dos nameservers propios (p.ej., ava.ns.cloudflare.com y cole.ns.cloudflare.com). Ve al panel de tu registrador de dominios y reemplaza los nameservers actuales por los de Cloudflare.
La propagación DNS puede tardar entre 15 minutos y 48 horas.
Modos SSL/TLS
Configura el modo SSL en SSL/TLS > Overview:
Modo Flexible (no recomendado en producción)
- Conexión cifrada entre el usuario y Cloudflare
- Conexión sin cifrar entre Cloudflare y tu VPS
- Útil solo si el servidor no tiene certificado SSL
Modo Full
- Cifrado en ambos tramos
- Acepta certificados autofirmados en el servidor
Modo Full (Strict) - Recomendado
- Cifrado en ambos tramos
- Requiere un certificado SSL válido en el servidor (Let's Encrypt funciona perfectamente)
# Instalar Certbot y obtener certificado Let's Encrypt en el servidor
sudo apt-get install -y certbot python3-certbot-nginx
# Obtener certificado para el dominio
sudo certbot --nginx -d tudominio.com -d www.tudominio.com
# Verificar renovación automática
sudo certbot renew --dry-run
Certificado Origin Cloudflare (alternativa)
Cloudflare puede emitir un certificado origen gratuito válido 15 años para la conexión entre Cloudflare y tu servidor:
- Ve a SSL/TLS > Origin Server
- Haz clic en Create Certificate
- Selecciona los dominios y el período de validez
- Descarga el certificado y la clave privada
- Configúralos en Nginx/Apache
Configuración de Caché
Niveles de caché
En Caching > Configuration, configura el nivel de caché:
- No Query String: Almacena en caché solo URLs sin parámetros
- Ignore Query String: Almacena en caché ignorando los parámetros GET
- Standard: Caché estándar (recomendado para la mayoría de sitios)
Browser Cache TTL
Controla cuánto tiempo los navegadores guardan los recursos en caché:
- Para sitios estáticos: 1 mes o más
- Para sitios dinámicos: 4 horas o menos
Purgar la caché
# Purgar toda la caché mediante la API de Cloudflare
curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/purge_cache" \
-H "Authorization: Bearer TU_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"purge_everything":true}'
# Purgar URLs específicas
curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/purge_cache" \
-H "Authorization: Bearer TU_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"files":["https://tudominio.com/imagen.jpg","https://tudominio.com/style.css"]}'
Cache Rules (antes Page Rules)
En Caching > Cache Rules, puedes definir comportamientos específicos:
- Bypass cache para
/wp-admin/*,/api/*,/cart - Cache everything para
/static/*con TTL extendido - Cache level: Standard para el resto del sitio
Reglas de Página
Las Page Rules (disponibles en Rules > Page Rules) permiten controlar el comportamiento por URL:
Ejemplos útiles:
| URL Pattern | Configuración |
|---|---|
tudominio.com/api/* | Cache Level: Bypass |
tudominio.com/wp-admin/* | Cache Level: Bypass, Security: High |
tudominio.com/static/* | Cache Level: Cache Everything, Edge TTL: 1 month |
http://tudominio.com/* | Always Use HTTPS |
El plan gratuito incluye 3 Page Rules. Para más reglas, usa Cache Rules y Transform Rules que ofrecen mayor flexibilidad.
WAF y Seguridad
Configuración del nivel de seguridad
En Security > Settings, ajusta el nivel de seguridad:
- Essentially Off: Solo bloquea amenazas muy conocidas
- Low: Para sitios con mucho tráfico legítimo internacional
- Medium: Balance recomendado para la mayoría de sitios
- High: Para sitios frecuentemente atacados
Reglas de Firewall (WAF)
En Security > WAF, puedes crear reglas personalizadas. Ejemplos útiles:
Bloquear países específicos:
(ip.geoip.country in {"CN" "RU" "KP"})
Bloquear User-Agents maliciosos:
(http.user_agent contains "sqlmap") or (http.user_agent contains "nikto")
Permitir solo tu IP para el panel de administración:
(http.request.uri.path contains "/wp-admin") and not (ip.src in {1.2.3.4/32})
Protección Bot
En Security > Bots, activa:
- Bot Fight Mode: Bloquea bots maliciosos conocidos (disponible en plan gratuito)
- Super Bot Fight Mode: Análisis avanzado (planes Pro y superiores)
Modo Under Attack
Para ataques DDoS activos, activa temporalmente el modo de máxima protección:
- Ve a Security > Settings
- Cambia el nivel de seguridad a I'm Under Attack
Optimización de Rendimiento
Speed Settings
En Speed > Optimization:
- Auto Minify: Activa la minificación de HTML, CSS y JavaScript
- Brotli: Activa la compresión Brotli (mejor que gzip)
- Rocket Loader: Carga JavaScript de forma asíncrona (puede afectar a algunas apps)
- HTTP/3 (QUIC): Activa el protocolo HTTP/3 para mejor rendimiento
Redirect Rules para HTTPS
# Verificar que el redireccionamiento HTTPS está activo
# En Cloudflare: SSL/TLS > Edge Certificates > Always Use HTTPS: ON
# En Cloudflare: SSL/TLS > Edge Certificates > Automatic HTTPS Rewrites: ON
Configuración en el Servidor
Obtener la IP real del visitante en Nginx
Cuando el tráfico pasa por Cloudflare, los logs de Nginx mostrarán la IP de Cloudflare en lugar de la IP real del visitante. Para corregirlo:
# Añadir al archivo de configuración de Nginx
# /etc/nginx/conf.d/cloudflare-real-ip.conf
# Rangos de IPs de Cloudflare (actualizar periódicamente)
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
real_ip_header CF-Connecting-IP;
# Verificar la configuración de Nginx
sudo nginx -t
sudo systemctl reload nginx
Restringir el acceso solo a IPs de Cloudflare (opcional pero recomendado)
# Crear script para permitir solo IPs de Cloudflare via UFW
cat > /usr/local/bin/actualizar-cf-ips.sh << 'EOF'
#!/bin/bash
# Obtener las IPs actuales de Cloudflare y actualizar UFW
# Limpiar reglas anteriores de Cloudflare
ufw delete allow 80/tcp 2>/dev/null
ufw delete allow 443/tcp 2>/dev/null
# Añadir IPs de Cloudflare para HTTP y HTTPS
for ip in $(curl -s https://www.cloudflare.com/ips-v4); do
ufw allow from "$ip" to any port 80,443 proto tcp
done
echo "IPs de Cloudflare actualizadas"
EOF
chmod +x /usr/local/bin/actualizar-cf-ips.sh
Solución de Problemas
El sitio muestra "Error 521: Web Server Is Down"
El servidor no responde. Verifica que Nginx/Apache está corriendo y que el firewall permite conexiones desde las IPs de Cloudflare.
# Verificar estado del servidor web
sudo systemctl status nginx
sudo ufw status
El certificado SSL muestra error o advertencia
Si usas modo Full (Strict), verifica que el certificado del servidor es válido:
# Comprobar el certificado con openssl
openssl s_client -connect tudominio.com:443 -servername tudominio.com 2>/dev/null | \
openssl x509 -noout -dates
Los cambios en el sitio no se ven inmediatamente
Purga la caché desde el panel de Cloudflare o usando la API.
Error de bucle de redirección (redirect loop)
Si tienes redirección a HTTPS en el servidor Y el modo SSL de Cloudflare es "Flexible", se produce un bucle. Solución: cambia el modo SSL a "Full" o elimina la redirección del servidor.
Conclusión
Cloudflare como CDN para tu VPS ofrece una mejora significativa en rendimiento, seguridad y disponibilidad sin complicaciones técnicas excesivas. Con el modo SSL Full (Strict), las reglas de caché bien configuradas y el WAF activo, tu servidor estará protegido contra los ataques más comunes mientras los visitantes disfrutan de tiempos de carga optimizados desde cualquier parte del mundo.


