WordPress rodando atrás de Cloudflare Tunnel

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.php com 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.

Rolar para cima