O guia que realmente resolve os bugs, não só repete o Docs da Cloudflare.
Cloudflare Tunnel é lindo: você expõe um WordPress sem abrir porta no modem, sem IP fixo, sem pedir bênção pro NAT.
Mas quando você joga isso na prática…
WordPress começa a agir como se tivesse tomado ácido:
- Login loop infinito
- Cookies travados
- URLs http:// no meio do site https://
- Painel “não seguro”
- Plugins reclamando de mixed content
- Previews bipolares
E nada disso é “mistério”.
É o WordPress acreditando no PHP, e o PHP acreditando na requisição interna HTTP que o túnel gera.
Vamos arrumar isso.
1. O problema real
Cloudflare entrega o tráfego pra você via:
Cloudflare (HTTPS real)
↓
Túnel (cloudflared)
↓
Servidor local (HTTP interno)
Seu PHP recebe a requisição como HTTP sem host definido, sem protocolo, sem autoridade, sem nada.
WordPress entra em modo “não faço ideia onde estou”.
2. O patch obrigatório no wp-config.php
Este é o mínimo vital.
Sem isso, nada funciona 100%:
$local_url = "seusite.com.br";
// ## Túnel Cloudflare
$_SERVER['HTTPS'] = 'on';
$_SERVER['HTTP_HOST'] = $local_url;
define('COOKIE_DOMAIN', $local_url);
define('COOKIEPATH', '/');
define('DOMAIN_CURRENT_SITE', $local_url);
define('SITECOOKIEPATH', '/');
define('ADMIN_COOKIE_PATH', '/');
Função de cada linha:
HTTPS = on
WordPress acredita que está em HTTPS e para de gerar links errados.HTTP_HOST
Corrige hostname que o cloudflared nem sempre repassa corretamente.- Cookie configs
Elimina 100% dos problemas de sessão, login, admin e cross-domain.
3. Coisas que ninguém te fala (mas fazem diferença)
3.1. Cloudflare “Flexible” é VENENO
Beira o crime.
Sempre deixe em Full ou Full (strict).
3.2. Se usa multisite, sem as constantes acima você morre
O multisite é ainda mais sensível a host/protocolo.
Com túnel então… esquece.
A correção acima resolve tudo.
3.3. X-Forwarded-Proto não adianta
WordPress nativo ignora esse header.
Você precisa forçar no PHP mesmo, por causa da forma como o túnel entrega o tráfego.
3.4. Cache da Cloudflare
Evite Page Rules agressivas no admin:wp-admin/* e wp-login.php devem ser bypass cache.
4. Checklist final do homem que sabe o que está fazendo
- Cloudflare DNS → Proxied laranja
- Túnel criado
- cloudflared rodando como serviço
wp-config.phpcom as diretivas obrigatórias- Cache do Cloudflare ajustado
- Sem “Flexible SSL”
- Teste final:
- Login funciona sem loop
- Mixed content zerado
- Painel HTTPS
- Plugins de cache se comportam
- Links permanentes funcionam
Se tudo isso está ok:
Parabéns, você agora tem um WordPress por túnel Cloudflare que não quebra.
5. Conclusão rápida
Cloudflare Tunnel é fenomenal pra eliminar portas expostas.
Mas WordPress odeia quando o servidor mente pra ele.
Com 10 linhas no wp-config.php, seu WordPress volta a ter identidade e para de agir como NPC bugado.
Copiou, colou, funcionou.
