408 Request Timeout means the server waited for a complete request from the client, exceeded its time limit, and closed the connection. The cause is the client sending the request line, headers, or body too slowly.
Unlike 504 Gateway Timeout, where internal or upstream processing is slow, the key distinction of 408 is that the side sending the request (the client) is slow.
POST /upload HTTP/1.1
Host: example.com
Content-Length: 5000000
(client stalls; body never fully arrives within the server's timeout)HTTP/1.1 408 Request Timeout
Connection: close
Content-Type: text/html
<h1>Request Timeout</h1># server waits this long for the client to send the request body
client_body_timeout 12s;
client_header_timeout 12s; # slow clients -> 408