408 Request Timeout

The server gave up waiting for the client to finish sending its request — slow or stalled upload, or a connection held open without a complete request. Unlike 504 (server-side upstream slowness), 408 points at the client-to-server leg.

What usually causes it

  • Slow/unstable client networks during large uploads
  • Clients opening connections without sending (keep-alive reuse edge cases)
  • Aggressive server request timeouts vs large payloads

How to debug and fix it

  1. Client-side: retry is safe and expected — browsers do it automatically for idempotent requests.
  2. For uploads, use chunking/resumable protocols rather than raising server timeouts indefinitely.
  3. Server-side: tune the request/headers timeout to fit real payload sizes (nginx client_body_timeout, etc.).

Easily confused with