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
- Correlate 499s with slow endpoints in access logs (
$request_time) - Speed up slow endpoints or move work to background jobs
- Align timeouts: client > load balancer > Nginx > app
Detailed fix by platform
Nginx
- 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
- Endpoints — Which URLs produce 499?
- Timing — What is their request_time?
- 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.
Was this page helpful?
Report a correction or suggest an improvement
Last updated 2 Oct 2026