538 Project Request Loop

Routing loops causing a request to cycle through Edgio servers repeatedly trigger the 538 Project Request Loop status code.

Usage

Edgio limited request nesting to a maximum of three levels. A request counted as nested when an Edgio site acted as the upstream of itself or of another Edgio site. When a request exceeded three nested Edgio requests, the platform terminated the request with 538.

Routing loops occur when:

  • The origin server points back to the Edgio edge, creating a circular path.
  • A CNAME record for the origin hostname resolves to the Edgio edge domain instead of the actual origin IP.
  • EdgeJS routing rules redirect or proxy the request back to the same Edgio-served domain.
  • Multiple CDN layers are chained and one forwards traffic back into Edgio.

Without a nesting limit, the request cycles indefinitely, consuming resources at every hop. The 538 response breaks the cycle once the request exceeds the three-level nesting maximum.

Edgio shutdown

Edgio filed for bankruptcy in September 2024 and its application platform was shut down in early 2025. This vendor-specific status code no longer appears in active infrastructure and is documented here for historical reference.

SEO impact

Search engines treat 538 responses as server errors. Persistent errors cause crawlers to reduce crawl frequency and eventually drop affected URLs from the index.

Example

A client requests a resource through Edgio, but the origin is misconfigured to route back through the Edgio edge, triggering a loop.

Request

GET /api/data HTTP/1.1
Host: www.example.re
Accept: application/json

Response

HTTP/1.1 538 Project Request Loop
Content-Type: text/html
x-0-status: eh=538

<html>
<head>
<title>538 Project Request Loop</title>
</head>
<body>
<h1>538 Project Request Loop</h1>
<p>The request went through too many servers.</p>
</body>
</html>

How to fix

Check the origin hostname in the Edgio project configuration. The origin must resolve to the actual backend server, not to the Edgio edge domain. Run dig against the origin hostname and confirm the resolved IP belongs to the backend infrastructure, not to Edgio.

dig origin.example.re

Review CNAME records. A CNAME chain pointing back to *.edgio.link or *.layer0.link creates a loop. Replace the CNAME with an A record pointing directly to the origin IP.

Inspect EdgeJS routing rules for any proxy() or serveStatic() calls forwarding requests to the same Edgio-served hostname. Routing rules intended for the origin must target the origin hostname, not the edge hostname.

When using multiple CDN layers in front of Edgio, verify the upstream CDN forwards to the correct Edgio origin shield, and the Edgio project forwards to the true backend. Each layer in the chain must advance the request toward the origin, never backward.

Review the x-0-status header in the error response to trace the path the request took before the loop was detected.

See also

Last updated: August 11, 2026