499
Unofficial (Nginx)
499 Client Closed Request: The Nginx Client Disconnect
✦ 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
| Cause | Example | How to Fix |
|---|---|---|
| Slow backend scripts | A 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 issues | Unstable Wi-Fi, dropped connections, or poor signal. | Stabilize the network; retry requests with exponential backoff. |
| Browser or mobile app timeout | The 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 away | User 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 timeouts | An 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_timeoutandproxy_connect_timeoutin 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).