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.