499 🌐 HTTP

HTTP 499 Client Closed Request (Nginx)

Nginx-specific code logged when the client disconnected before the server finished responding.

Seen on: Nginx

Meaning

You won’t see 499 in a browser — it appears in Nginx access logs. It means the client (browser, mobile app, load balancer, or upstream service) gave up waiting. Many 499s usually point to slow responses or a client-side timeout shorter than server processing time.

Common causes

  • Client timeout shorter than server response time
  • User navigated away or closed the tab
  • Load balancer in front of Nginx timing out first
  • Health checks with aggressive timeouts

⚡ Quick fix

  1. Correlate 499s with slow endpoints in access logs ($request_time)
  2. Speed up slow endpoints or move work to background jobs
  3. Align timeouts: client > load balancer > Nginx > app

Detailed fix by platform

Nginx

  1. Log request time to find slow endpoints:
    nginx
    log_format timed '$remote_addr "$request" $status $request_time $upstream_response_time';
    access_log /var/log/nginx/access.log timed;

How to diagnose

  1. Endpoints — Which URLs produce 499?
  2. Timing — What is their request_time?
  3. Client — What timeout does the caller use?

🧠 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.