Cloudflare com VPS: CDN gratuito e proteção DDoS
Cloudflare é a camada de proteção e aceleração mais usada no mundo — gratuita para uso básico e extremamente poderosa. Na frente da sua VPS, distribui assets estáticos pela edge global, absorve ataques DDoS antes de chegarem ao servidor e adiciona HTTPS automático sem configurar Certbot.
Configurar DNS e proxy no Cloudflare
Migrar DNS para o Cloudflare e ativar o proxy:
bash
# 1. Criar conta em cloudflare.com/pt-br (gratuito)
# 2. Adicionar site → inserir domínio
# 3. Cloudflare importa registros DNS automaticamente
# Tipos de registro DNS no Cloudflare:
# ☁️ Nuvem laranja (Proxied): tráfego passa pelo Cloudflare
# → CDN, cache, DDoS, SSL automático ativados
# → IP real da VPS fica oculto
# ☁️ Nuvem cinza (DNS Only): resolve direto para IP da VPS
# → sem proteção, sem CDN
# Registros para configurar:
# A @ IP_DA_VPS Proxied (ícone laranja)
# A www IP_DA_VPS Proxied
# A api IP_DA_VPS Proxied
# Para subdomínios que precisam de conexão direta (SSH, WireGuard):
# A ssh IP_DA_VPS DNS Only (ícone cinza)
# Após ativar Proxy — configurar Nginx para confiar no IP real:
# /etc/nginx/conf.d/cloudflare-real-ip.conf
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 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
real_ip_header CF-Connecting-IP;Configurar cache de assets estáticos
Page Rules e Cache Rules para servir assets pelo edge do Cloudflare:
nginx
# Cloudflare cacheia automaticamente:
# .css, .js, .png, .jpg, .gif, .woff2, .svg, .ico (extensões estáticas)
# Para cachear mais tipos ou controlar TTL:
# Dashboard → Caching → Cache Rules → Create Rule
# Regra: cachear tudo de /static/*
# Se: URL Path começa com /static/
# Então:
# - Cache Level: Cache Everything
# - Edge Cache TTL: 1 mês
# - Browser Cache TTL: 1 dia
# Cabeçalho Cache-Control no Nginx (o Cloudflare respeita):
location /static/ {
expires 30d;
add_header Cache-Control "public, immutable, max-age=2592000";
add_header Vary "Accept-Encoding";
}
# Verificar se o Cloudflare está servindo do cache:
curl -I https://seusite.com.br/static/app.js | grep -i "cf-cache-status"
# CF-Cache-Status: HIT → servido do cache (não chegou na VPS!)
# CF-Cache-Status: MISS → buscou na VPS e cacheou
# CF-Cache-Status: BYPASS → bypass configurado
# Purgar cache manualmente:
# Dashboard → Caching → Custom Purge → por URL ou tudoRegras de segurança e rate limiting no Cloudflare
WAF, firewall e rate limiting pelo painel do Cloudflare:
bash
# Firewall Rules (substituídas por Custom Rules no plano gratuito):
# Bloquear acesso ao /admin de fora do Brasil:
# Security → WAF → Custom Rules → Create Rule
# Expression: (http.request.uri.path eq "/admin") and (ip.geoip.country ne "BR")
# Action: Block
# Rate limiting por IP (plano gratuito: 1 regra):
# Security → Rate Limiting → Create Rule
# Path: /api/*
# Requests: 100 por 10 segundos
# Action: Block (429)
# Bloquear bot scanners (User-Agent suspeito):
# Expression: (http.user_agent contains "zgrab") or (http.user_agent contains "masscan")
# Action: Block
# Challenge para IPs suspeitos (mostra captcha):
# Security Level: Medium → Cloudflare desafia IPs com reputação ruim
# Bot Fight Mode (plano gratuito):
# Security → Bots → Bot Fight Mode → On
# Bloqueia bots conhecidos (scrapers, credential stuffing)
# Ver analytics de ameaças bloqueadas:
# Security → Overview → Threats Over TimeSSL/TLS e configurações avançadas
Configurar SSL entre Cloudflare e VPS corretamente:
nginx
# Modos SSL/TLS do Cloudflare:
# Flexible: browser→CF via HTTPS, CF→VPS via HTTP (INSEGURO)
# Full: browser→CF via HTTPS, CF→VPS via HTTPS (certificado pode ser self-signed)
# Full Strict: browser→CF via HTTPS, CF→VPS via HTTPS (certificado deve ser válido)
# Configurar como Full (Strict) — recomendado:
# SSL/TLS → Overview → Full (strict)
# Certificado de origem do Cloudflare (válido por 15 anos):
# SSL/TLS → Origin Server → Create Certificate
# Baixar certificate.pem e private-key.pem
# No Nginx:
ssl_certificate /etc/ssl/cloudflare/certificate.pem;
ssl_certificate_key /etc/ssl/cloudflare/private-key.pem;
# Bloquear tráfego direto à VPS (apenas Cloudflare pode acessar):
# No UFW: bloquear 80/443 para todos, liberar apenas IPs do Cloudflare
sudo ufw delete allow 80/tcp
sudo ufw delete allow 443/tcp
for ip in $(curl -s https://www.cloudflare.com/ips-v4); do
sudo ufw allow from "$ip" to any port 80,443 proto tcp
done
# HSTS via Cloudflare:
# SSL/TLS → Edge Certificates → HTTP Strict Transport Security → EnableMonitorar performance com Cloudflare Analytics
Usar as métricas do Cloudflare para otimizar o site:
bash
# Dashboard do Cloudflare → Analytics & Logs:
# Métricas disponíveis:
# - Requests: total vs cacheado vs não-cacheado
# - Bandwidth: economia com CDN (% servido pelo edge vs origem)
# - Unique visitors por país
# - Status codes (erros 4xx/5xx)
# - Threats bloqueadas
# Verificar hit rate do cache via API:
curl -X GET "https://api.cloudflare.com/client/v4/zones/ZONE_ID/analytics/dashboard" \
-H "X-Auth-Email: seu@email.com" \
-H "X-Auth-Key: API_KEY" \
-H "Content-Type: application/json" | python3 -m json.tool
# Workers para edge computing (plano gratuito: 100k req/dia):
# Lógica JavaScript rodando nos POPs do Cloudflare — mais rápido que VPS
# Speed → Optimization:
# - Auto Minify: minificar JS/CSS/HTML automaticamente
# - Brotli: compressão brotli no edge
# - Rocket Loader: carregamento assíncrono de JS (cuidado: pode quebrar SPAs)
# - Polish: compressão de imagens (plano Pro)$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o VPS em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.