Cloudflare Outage: Tell Cloudflare From Your Origin and Detect It in Your Logs

By Sazabi Team

Failure facts checked on the vendor’s docs on Nov 8, 2026.

Cloudflare sits in front of your app, so its failures look like your failures. Visitors see an error page, your origin may see less traffic than usual, and your own dashboards can stay green. The first job in an incident is to decide which side of the proxy is broken.

Which side returned the error

Cloudflare documents a simple test for 502 and 504. A Cloudflare-branded error page means your origin web server returned the error. A blank page without Cloudflare branding means the error came from Cloudflare itself.

The 52x family is about reaching your origin, and most of it points at your side:

  • 521: the origin refused the connection. The usual causes are an offline origin application or security software blocking Cloudflare IP ranges.
  • 522: Cloudflare timed out reaching the origin. Either no SYN+ACK arrived within 19 seconds, or no acknowledgment of the request arrived within 90 seconds after connecting.
  • 524: the connection worked, but the origin sent no HTTP response before the default 125-second Proxy Read Timeout. Enterprise zones can raise it up to 6,000 seconds.

When the failure is on Cloudflare's network, the picture is different. Cloudflare's post-mortem of its November 18, 2025 outage says its network began failing to deliver core traffic at 11

UTC and that users saw an error page showing a failure within Cloudflare's network. Your origin was healthy and simply received less.

Evidence that separates the two

Origin logs alone cannot show an edge outage, because the requests never arrive. You need one signal from outside Cloudflare and one from inside your origin.

time   origin_req  origin_5xx  probe_status  probe_ms
11:18  410         1           200           180
11:21  96          0           500           1220
11:24  88          0           500           1190

This is an example, not output from a real project. Origin traffic fell by about three quarters, origin errors stayed at zero, and an outside probe of the public hostname fails. That is an edge problem. If origin 5xx had climbed instead, the probe and your users would agree, and the cause would be your server.

Log the cf-ray request header on every origin request. Cloudflare gives every request through its network a Ray ID and passes it to the origin in that header, so one Ray ID ties a user complaint to one log line.

Classify automatically

def classify(origin_req, usual_req, origin_5xx_share, probe_ok):
    traffic_fell = origin_req < 0.5 * usual_req
    if origin_5xx_share >= 0.05:
        return "origin or app"
    if traffic_fell and not probe_ok:
        return "edge: check Cloudflare status"
    if traffic_fell:
        return "demand drop or upstream of the edge"
    return "healthy"

Compare usual_req with the same hour on previous weeks, not the previous hour, or every evening dip becomes an incident. The 0.5 and 0.05 are starting points; tune them against a month of your own history.

Alerting and response

  1. Probe the public hostname from outside your network every minute, and alert after three failures in a row.
  2. Alert on origin request volume falling below half of usual with no rise in origin errors.
  3. Subscribe to Cloudflare's status notifications. Cloudflare says they are delivered independently of its own infrastructure and can go to email, a webhook, Slack, Discord or Google Chat.
  4. Decide your bypass in advance. Pausing Cloudflare on a site sends traffic straight to your origin in five minutes or less, but the domain loses Rules, WAF and Cloudflare certificates while paused. Turning the proxy off per DNS record is narrower.
  5. Keep the probe and origin timestamps. They are the evidence for a support case or a credit request.

Checklist

  • Origin logs include cf-ray, status and duration.
  • An external probe runs outside Cloudflare's path.
  • Origin volume is compared with the same hour of previous weeks.
  • Status notifications reach a channel that does not depend on your own stack.
  • The pause or proxy-off runbook is written and tested.

For the vendor-neutral method, read detecting vendor degradation and third-party failure monitoring. To send Cloudflare logs to Sazabi, see the Cloudflare integration, and for what happens after an incident, the postmortem entry. Sazabi can watch the same signals and open an investigated issue when edge errors rise.

Cloudflare outages facts

  • Branded vs unbranded 502 and 504: A Cloudflare-branded 502 or 504 page means your origin returned the error; a blank page without Cloudflare branding means the error came from Cloudflare. (Cloudflare docs, accessed Nov 8, 2026)
  • Error 522 timeouts: Error 522 means Cloudflare got no SYN+ACK within 19 seconds, or no acknowledgment of its request within 90 seconds after connecting, to your origin. (Cloudflare docs, accessed Nov 8, 2026)
  • Error 524 proxy read timeout: Error 524 means the origin accepted the connection but sent no HTTP response within the default 125-second Proxy Read Timeout. (Cloudflare docs, accessed Nov 8, 2026)
  • Pause Cloudflare: Pausing Cloudflare on a site sends traffic straight to your origin, takes five minutes or less, and switches off Rules, WAF and Cloudflare certificates for the domain. (Cloudflare docs, accessed Nov 8, 2026)
  • Status notifications: The rebuilt status page sends notifications by email, webhook, Slack, Discord or Google Chat, delivered independently of Cloudflare infrastructure, and keeps the documented Status API. (Cloudflare docs, accessed Nov 8, 2026)

With Sazabi

The Sazabi agent automatically sets up sensors for your project and maintains them over time. When your code calls Cloudflare, it watches a question like this one:

Tell me when the share of requests answered with a 5xx through Cloudflare is well above its usual level, per hostname, or when requests reaching my origin fall well below the usual level.

When the answer turns abnormal, Sazabi investigates and opens an issue. Vendor degradation covers the signal behind it.

Frequently Asked Questions

How do I know if a Cloudflare 502 or 504 is Cloudflare or my server?

Look at the error page. According to Cloudflare, a Cloudflare-branded 502 or 504 page means your origin web server returned that error, and a blank page without branding means the error came from Cloudflare.

What do errors 521, 522 and 524 point to?

All three are about reaching your origin. 521 is a refused connection, 522 is a connection timeout and 524 is an origin that connected but did not answer within 125 seconds. Check your own server and firewall first.

Can I route around a Cloudflare outage?

You can pause Cloudflare on a site or turn the proxy off for a record, which sends visitors straight to your origin. You lose Cloudflare rules, WAF and certificates for that traffic, so decide before the incident.

Will Cloudflare tell me about an incident while Cloudflare is down?

Cloudflare says its status page notifications are delivered independently of Cloudflare infrastructure, by email, webhook, Slack, Discord or Google Chat.

Sources

  1. Origin-versus-Cloudflare test for 502 and 504, branded versus blank error page (accessed Nov 8, 2026)
  2. 522 timeouts of 19 seconds before TCP connects and 90 seconds after, common causes at the origin (accessed Nov 8, 2026)
  3. 125-second Proxy Read Timeout, 30-second Proxy Write Timeout, Enterprise increase up to 6,000 seconds (accessed Nov 8, 2026)
  4. Global pause versus turning the proxy off per DNS record, what a paused domain loses (accessed Nov 8, 2026)
  5. Status notification channels, delivery independent of Cloudflare infrastructure, Status API still supported (accessed Nov 8, 2026)
  6. Every request through Cloudflare gets a Ray ID, sent to the origin in the cf-ray request header (accessed Nov 8, 2026)
  7. Cloudflare post-mortem: failures delivering core network traffic began 11:20 UTC, error page showed a failure within Cloudflare network, not an attack (accessed Nov 8, 2026)