499 Unofficial (Nginx) 📋

499 Client Closed Request: The Nginx Client Disconnect

Last updated: June 28, 2026 • 5 min read

✦ The Golden Answer: The 499 Client Closed Request is a non‑standard HTTP status code used exclusively by Nginx. It means that the client closed the connection before the server could send a response. This typically happens when a client times out (e.g., browser timeout), cancels a request (e.g., stops loading a page), or navigates away while a request is still in progress. It is not an error with the server itself — it's a client‑side disconnection.

Common Causes of 499 Errors

CauseExampleHow to Fix
Slow backend scriptsA PHP/Node.js script takes too long to process, causing the client to time out.Optimize the script, increase client timeouts, or use asynchronous processing.
Client network issuesUnstable Wi-Fi, dropped connections, or poor signal.Stabilize the network; retry requests with exponential backoff.
Browser or mobile app timeoutThe client has a fixed timeout (e.g., 30 seconds) and the server responds slower.Increase the client timeout or split the request into smaller chunks.
User navigates awayUser clicks a link or closes the tab while a request is in progress.This is normal behavior; you cannot prevent it, but you can log it to identify patterns.
Load balancer or proxy timeoutsAn intermediate proxy (like Cloudflare) times out before Nginx responds.Adjust timeouts in the proxy or load balancer configuration.

Example: Nginx Log Entry

In Nginx's access log, a 499 entry looks like this:

192.168.1.1 - - [28/Jun/2026:10:15:23 +0000] "GET /slow-endpoint HTTP/1.1" 499 0 "-" "Mozilla/5.0 ..." "-"

The 499 status appears instead of a 200 or 500 because the client disconnected before Nginx could send the response.

How to Fix 499 Errors

  • As a visitor: Refresh the page, wait a few seconds, and try again. If the error persists, check your internet connection.
  • As a site owner: Optimize slow backend scripts (use caching, database indexes, or background jobs). Increase the proxy_read_timeout and proxy_connect_timeout in Nginx. Use a CDN or load balancer to reduce server load. Consider implementing client‑side retries with exponential backoff.

Nginx Configuration Tips

Increase timeouts to reduce the chance of 499s:

proxy_read_timeout 60s; proxy_connect_timeout 60s; send_timeout 60s;

Also consider using keepalive_timeout to keep connections alive longer.

Frequently Asked Questions

Is 499 a client error or a server error?

It is a client‑side disconnection, but Nginx logs it as a 4xx (client error). The server is working correctly; the client simply stopped waiting.

Can I prevent 499 errors?

Not entirely, because clients can close connections at any time. However, you can reduce them by optimizing server response times and increasing timeouts.

Is 499 specific to Nginx?

Yes, it is defined only in Nginx. Other web servers may log similar events differently (e.g., Apache may not log such disconnections by default).