<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>HTTP Status Codes on Netdata</title><link>https://www.netdata.cloud/tags/http-status-codes/</link><description>Recent content in HTTP Status Codes on Netdata</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 22 Aug 2026 05:09:03 +0300</lastBuildDate><atom:link href="https://www.netdata.cloud/tags/http-status-codes/index.xml" rel="self" type="application/rss+xml"/><item><title>Buffering keepalive and Hidden 500-Series Errors in NGINX</title><link>https://www.netdata.cloud/academy/hidden-500-ngnix-series-errors/</link><pubDate>Sat, 16 Aug 2025 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/academy/hidden-500-ngnix-series-errors/</guid><description>&lt;p&gt;Your NGINX instance is humming along, handling traffic flawlessly. Then, a sudden traffic spike or a deployment of a new feature that handles larger files occurs, and your monitoring dashboards light up with 500-series errors. You check the NGINX error logs, but find nothing conclusive—just generic &lt;code&gt;502 Bad Gateway&lt;/code&gt; or &lt;code&gt;504 Gateway Timeout&lt;/code&gt; messages that don&amp;rsquo;t point to a root cause. These are the hidden, frustrating errors that often stem not from your application code, but from poorly tuned NGINX buffering and &lt;code&gt;keepalive&lt;/code&gt; settings.&lt;/p&gt;</description></item><item><title>Fix NGINX 500 Internal Server Error: Easy Steps</title><link>https://www.netdata.cloud/academy/how-to-fix-nginx-500-internal-server-error-simple-steps-for-troubleshooting/</link><pubDate>Thu, 31 Oct 2024 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/academy/how-to-fix-nginx-500-internal-server-error-simple-steps-for-troubleshooting/</guid><description>&lt;p&gt;When managing a website or web application through NGINX, it&amp;rsquo;s quite likely you&amp;rsquo;ve stumbled upon the feared 500 Internal Server Error at least once. This error often causes a moment of panic as it typically indicates a problem lurking within the server&amp;rsquo;s operations. Regrettably, one finds that the message falls short in offering sufficient context to aid in uncovering the underlying reason.&lt;/p&gt;&#10;&lt;p&gt;No need to fret! This guide is here to take you step by step through the usual culprits behind a 500 error when using NGINX and, even better, how to solve it. If you&amp;rsquo;re facing a problem like not having the right permissions, a setup mistake, or something different, don&amp;rsquo;t worry—we have all the steps you need to fix it.&lt;/p&gt;</description></item><item><title>How To Fix 504 Gateway Timeout Errors In NGINX</title><link>https://www.netdata.cloud/academy/how-to-diagnose-and-fix-504-gateway-timeout-errors-in-nginx/</link><pubDate>Mon, 27 May 2024 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/academy/how-to-diagnose-and-fix-504-gateway-timeout-errors-in-nginx/</guid><description>&lt;p&gt;Encountering a &amp;lsquo;504 Gateway Timeout&amp;rsquo; error in Nginx can be frustrating, especially when it disrupts the availability of your web applications. This error indicates that the server, while acting as a gateway or proxy, did not receive a timely response from the upstream server. This guide will help DevOps and Site Reliability Engineers (SRE) diagnose and fix these errors efficiently.&lt;/p&gt;&#10;&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A 504 Gateway Timeout means Nginx, acting as a proxy, didn&amp;rsquo;t get a response from the upstream server in time, so the problem sits in the backend, the network, or your timeout settings rather than in Nginx itself.&lt;/li&gt;&#10;&lt;li&gt;Diagnose before you change anything: check the Nginx and upstream logs, measure backend response time with curl, and test connectivity with ping, traceroute, or mtr.&lt;/li&gt;&#10;&lt;li&gt;The fastest stopgap is raising Nginx&amp;rsquo;s timeout directives, but the durable fix is making the upstream faster through resource scaling, query optimization, and load balancing.&lt;/li&gt;&#10;&lt;li&gt;Adding Nginx caching reduces how often requests hit the upstream at all, which keeps a strained backend responsive and cuts down 504s.k.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="understanding-the-504-gateway-timeout-error"&gt;Understanding The &amp;lsquo;504 Gateway Timeout&amp;rsquo; Error&lt;/h2&gt;&#10;&lt;p&gt;The &amp;lsquo;504 Gateway Timeout&amp;rsquo; error typically occurs in Nginx when:&lt;/p&gt;</description></item><item><title>nginx 413 Request Entity Too Large: client_max_body_size explained</title><link>https://www.netdata.cloud/guides/nginx/nginx-413-request-entity-too-large/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/nginx/nginx-413-request-entity-too-large/</guid><description>&lt;p&gt;A &lt;code&gt;413 Request Entity Too Large&lt;/code&gt; after adding &lt;code&gt;client_max_body_size 50m&lt;/code&gt; to &lt;code&gt;nginx.conf&lt;/code&gt; usually means a more specific context still overrides it, or the upstream application rejects the body after nginx accepts it. The directive applies to &lt;code&gt;http&lt;/code&gt;, &lt;code&gt;server&lt;/code&gt;, and &lt;code&gt;location&lt;/code&gt; blocks. Raising it at the edge only moves the failure deeper if the rest of the stack is not adjusted. This guide covers how the directive inherits, when nginx fires the 413, how &lt;code&gt;proxy_request_buffering&lt;/code&gt; changes the failure mode, and why you must verify every hop including the upstream application.&lt;/p&gt;</description></item><item><title>nginx 499 status code: why clients close connections before the response</title><link>https://www.netdata.cloud/guides/nginx/nginx-499-client-closed-connection/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/nginx/nginx-499-client-closed-connection/</guid><description>&lt;p&gt;Status 499 in nginx access logs means the client closed the TCP connection before nginx finished responding. It is an nginx-specific code that never reaches the client, so it is easy to dismiss. In practice, a 499 surge is an early warning: users or intermediaries abandon requests before upstreams officially time out and before 5xx errors spike. Ignore 499s and you usually see 502s or 504s minutes later.&lt;/p&gt;&#10;&lt;p&gt;This guide shows how to read 499s, separate real user pain from load-balancer noise, and fix the root cause.&lt;/p&gt;</description></item><item><title>nginx 500 Internal Server Error: how to diagnose it</title><link>https://www.netdata.cloud/guides/nginx/nginx-500-internal-server-error/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/nginx/nginx-500-internal-server-error/</guid><description>&lt;p&gt;A 500 from nginx tells you something failed in the request path, but not whether the failure originated in your application, FastCGI/uWSGI backend, or nginx itself. When 500s spike during an incident, first determine which side of the nginx boundary is breaking.&lt;/p&gt;&#10;&lt;p&gt;Unlike 502 Bad Gateway or 504 Gateway Time-out, which point upstream, a 500 can be an application bug passed through by nginx, a configuration error, a permission failure, or resource exhaustion inside an nginx worker.&lt;/p&gt;</description></item><item><title>NGINX 502 Bad Gateway: Causes And How To Fix It</title><link>https://www.netdata.cloud/guides/nginx/nginx-502-bad-gateway/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/nginx/nginx-502-bad-gateway/</guid><description>&lt;p&gt;A 502 Bad Gateway means the upstream server returned an invalid response, refused the connection, or terminated before completing the response. Unlike 504, which signals upstream slowness, 502 means the upstream never produced a valid response or nginx could not reach it.&lt;/p&gt;&#10;&lt;p&gt;Start with the error log. A single line like &lt;code&gt;connect() failed (111: Connection refused)&lt;/code&gt; tells you the upstream is not listening. A line like &lt;code&gt;upstream prematurely closed connection&lt;/code&gt; tells you the backend died mid-request. Match the exact message to the root cause.&lt;/p&gt;</description></item><item><title>Nginx 503 Service Temporarily Unavailable: Causes &amp; Fixes</title><link>https://www.netdata.cloud/guides/nginx/nginx-503-service-unavailable/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/nginx/nginx-503-service-unavailable/</guid><description>&lt;p&gt;A &lt;code&gt;503 Service Temporarily Unavailable&lt;/code&gt; from nginx does not always mean the upstream application is broken. A healthy nginx process returns 503 by design when rate limits reject traffic, or when every backend in an upstream block is unavailable. The same status code covers three different failure paths: intentional throttling, upstream exhaustion, or resource saturation on the nginx host. The fix depends on which path the request took.&lt;/p&gt;&#10;&lt;p&gt;Distinguishing rate-limit 503s from upstream 503s avoids chasing ghost backend failures. The &lt;code&gt;limit_req&lt;/code&gt; and &lt;code&gt;limit_conn&lt;/code&gt; modules default to status 503, not 429. This guide maps the three primary failure paths and gives commands to prove which one is active.&lt;/p&gt;</description></item><item><title>NGINX 504 Gateway Time-Out: Causes &amp; Fixes</title><link>https://www.netdata.cloud/guides/nginx/nginx-504-gateway-timeout/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/nginx/nginx-504-gateway-timeout/</guid><description>&lt;p&gt;A 504 Gateway Time-out means nginx reached the upstream but the upstream did not finish its response before &lt;code&gt;proxy_read_timeout&lt;/code&gt; expired. The default is 60 seconds. Unlike a 502 Bad Gateway, which means nginx never established a valid upstream connection, a 504 means the connection succeeded but the response did not complete in time.&lt;/p&gt;&#10;&lt;p&gt;This guide covers isolating slow upstreams via access log variables, tuning timeouts and retries, and distinguishing 504 from 502.&lt;/p&gt;</description></item></channel></rss>