HTTPfy

499 Client Closed Request

nginx log-only code: the client closed the connection before nginx sent the response.

499 at a glance

Code
499
Name
Client Closed Request
Class
4xx Client error
Status
Non-standard used by nginx
Documented by
nginx
Client receives
Nothing: the client already disconnected. 499 is written to the access log only.
Cacheable by default
Not applicable: this code is never sent to the client.

What 499 means

499 appears only in nginx access logs. It records that the client went away (closed the connection) while nginx was still waiting on the upstream or sending. Nothing is sent to the client. A trickle of 499s is normal; a spike usually means the backend became slow enough that clients or a load balancer in front give up first.

What typically causes a 499

  • Users navigating away or closing the tab during slow pages; mobile clients losing connectivity.
  • A load balancer in front of nginx (ALB, Cloudflare) timing out before nginx does, then closing the connection.
  • HTTP client timeouts in APIs and microservices shorter than the upstream processing time.
  • Health checks with short timeouts.

Fix it on the server

  • Look at $request_time and $upstream_response_time for 499 lines: if they cluster near a timeout value, that layer is the one giving up.
  • Speed up the slow endpoint, or align timeouts so the outermost layer has the longest.
  • proxy_ignore_client_abort on; lets the upstream finish work when clients disconnect (useful for non-idempotent requests).

Fix it as a client or visitor

  • Increase the client timeout if the server is known to be slow for this operation.

Example log line

203.0.113.7 - - [10/Nov/2026:12:00:00 +0000] "GET /report HTTP/1.1" 499 0 "-" "curl/8.10.1" rt=30.001 urt=-

Opens the HTTP headers tool with your URL filled in; it shows the status line and headers of every redirect hop.