Cuando la página de error lleva la marca de Cloudflare, el 504 lo devolvió el servidor de origen: Cloudflare actuó como intermediario y la falla está del lado del sitio, normalmente una aplicación que no respondió a tiempo. Si la página no lleva la marca, el error puede haberlo generado Cloudflare misma.
En ambos casos, copiá el Ray ID y la hora exacta del error: son los datos que permiten ubicar la solicitud.
Si el error solo aparece con el dominio proxado por Cloudflare y el sitio responde con normalidad cuando lo abrís sin pasar por el proxy, probá con Pause Cloudflare on Site, que pausa el proxy y envía el tráfico directamente al servidor. No uses Development Mode como prueba: suspende la caché, pero deja activos el WAF, las reglas y el SSL/TLS. Los dos controles están explicados en cómo desactivar Cloudflare temporalmente.
Si el código que ves es 524 a secas, no es un 504: Cloudflare conectó con tu servidor, pero este no devolvió ninguna respuesta antes del Proxy Read Timeout, cuyo valor por defecto es de 125 segundos (las zonas Enterprise de Cloudflare pueden elevarlo). En ese caso la aplicación se demoró más que el límite de Cloudflare, y las secciones de esta guía sobre acciones lentas y rendimiento de PHP aplican igual.