The server timed out waiting for the client to finish sending the request.
The server timed out waiting for the client to finish sending the request. The client did not produce a request within the time the server was prepared to wait. This is different from a 504 Gateway Timeout, which is about the server waiting for an upstream server. A 408 is specifically about the client being too slow to transmit its request.
A 408 error occurs when the server has a configured timeout for receiving the complete client request, and the client fails to send the full request within that window. The server essentially says "I've been waiting long enough for you to finish your request - I'm closing this connection."
This often happens during large file uploads over slow connections, when a client's network is intermittent, or when idle keep-alive connections expire. Some servers send 408 before closing idle connections to signal they're reclaiming resources.
Platform-Specific Notes:
Nginx Controlled by client_header_timeout (default 60s) and client_body_timeout (default 60s). Increase these for slow clients or large uploads.
Apache Uses Timeout directive (default 60s) and RequestReadTimeout from mod_reqtimeout to control client read timeouts.
Cloudflare Has a 100-second timeout for receiving the complete request from clients. This cannot be changed on free plans.
Node.js Configure via server.requestTimeout (default 300s in Node 18+) or server.headersTimeout.
client_body_timeout (Nginx) or Timeout (Apache) if legitimate requests are timing out# Client starts sending a large file upload but is too slow POST /api/upload HTTP/1.1 Host: example.com Content-Type: multipart/form-data; boundary=----abc123 Content-Length: 104857600 # ... client sends data slowly, server timeout reached ... # Server Response (after waiting 60 seconds) HTTP/1.1 408 Request Timeout Connection: close Content-Type: application/json { "error": "Request Timeout", "message": "The server timed out waiting for the request to complete", "timeout_seconds": 60, "statusCode": 408 }
Track response times and detect timeout issues across your infrastructure. Get alerts when endpoints become slow or unresponsive.
Start Free Monitoring