408 🌐 HTTP

HTTP 408 Request Timeout

The server closed the connection because the client took too long to send the complete request.

Seen on: Nginx Apache

Meaning

408 is about the client being slow to *send* the request (headers/body), not the server being slow to respond (that’s 504). It’s common on slow mobile networks, large uploads, or idle keep-alive connections.

Common causes

  • Slow or unstable client network during upload
  • Large request body with a short server body-read timeout
  • Idle keep-alive connection reused after the server closed it
  • Load balancer idle timeout shorter than the upload duration

⚡ Quick fix

  1. Retry the request (408 is generally safe to retry for idempotent requests)
  2. Increase body/header read timeouts on the server or load balancer
  3. Upload large files in chunks or via direct-to-storage (pre-signed URLs)

Detailed fix by platform

Nginx

  1. Raise read timeouts:
    nginx
    client_body_timeout 120s;
    client_header_timeout 60s;

Apache

  1. Increase Timeout and check mod_reqtimeout (RequestReadTimeout header=20-40,MinRate=500 body=60,MinRate=500).

How to diagnose

  1. Payload — Is this a large upload or slow client?
  2. Timeouts — Which hop (LB, proxy, server) has the shortest read timeout?
  3. Retry — Does an immediate retry succeed?

🧠 Still stuck? Analyze your error

Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.