{"id":22079,"date":"2026-11-10T08:00:00","date_gmt":"2026-11-10T07:00:00","guid":{"rendered":"https:\/\/webhosting.de\/?p=22079"},"modified":"2026-11-05T08:25:52","modified_gmt":"2026-11-05T07:25:52","slug":"nginx-stub-status-web-server-monitoring","status":"publish","type":"post","link":"https:\/\/webhosting.de\/en\/nginx-stub-status-webserver-monitoring\/","title":{"rendered":"NGINX Stub Status: Monitor Web Server Activity in Real Time"},"content":{"rendered":"<div class=\"wh-article\" data-wh-layout=\"2.1.2\" style=\"width:100%;max-width:820px;margin:0 auto;color:#263b4b;font-family:inherit;font-size:18px;line-height:1.8;text-align:start;overflow-wrap:break-word;box-sizing:border-box\"><p class=\"wh-lead\" style=\"font-size:20px;line-height:1.7;color:#233746;margin:0 0 1.1em\">With NGINX Stub Status, you can monitor client connections and request counters via a secure HTTP endpoint. The values show the <strong style=\"font-weight:700;color:inherit\">Connection and Query Activity<\/strong>, but no direct CPU, memory, or capacity utilization. Repeated queries reveal changes and allow for the calculation of an average query rate. For this, the module must be available in the NGINX build being used. For long-term trends and alerts, the status page can be supplemented with an exporter and Prometheus; both endpoints require appropriate access controls.  <\/p>\n<nav class=\"wh-toc\" aria-label=\"Contents of this article\" style=\"display:block;margin:28px 0 38px;padding:22px;border:1px solid #d9e4e8;border-radius:14px;background:#f4f8f8\"><p class=\"wh-toc-title\" style=\"font-size:13px;font-weight:700;letter-spacing:.08em;color:#49656b;margin:0 0 14px\">Go directly to the section<\/p><div class=\"wh-toc-grid\" style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:10px\"><div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#stub-status-grundlagen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">What NGINX's \"stub\" status indicates<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#metriken-verstehen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Distinguishing Between Connections and Requests<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#modul-voraussetzungen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Check Module and Version<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#endpunkt-konfigurieren\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Set Up a Protected Status Endpoint<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#aktivierung-funktionstest\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Check the configuration and retrieve the status<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#werte-und-raten\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Read Status Values and Calculate Rates<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#betrieb-fehlersuche\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Examining Errors and Limitations<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#verlauf-diagnose\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Classifying Trends and Upstream Issues<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#monitoring-entscheidung\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">From Status to Monitoring<\/a><\/div>\n<\/div><\/nav><section class=\"wh-section\" aria-labelledby=\"stub-status-grundlagen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"stub-status-grundlagen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">What NGINX's \"stub\" status indicates<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><strong style=\"font-weight:700;color:inherit\">NGINX Stub Status<\/strong> Provides basic web server metrics as text via a configured HTTP endpoint. The response describes the activity of the queried NGINX process group\u2014specifically, client connections and the total number of requests. You can retrieve this information locally and compare it repeatedly without having to deploy a full-fledged monitoring system. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">You need to distinguish between two types of values: One <strong style=\"font-weight:700;color:inherit\">Snapshot<\/strong> shows, for example, how many client connections are active during a retrieval. Total counters such as <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">requests<\/code> In contrast, these figures indicate the total number of requests recorded. Only by comparing multiple meter readings taken at known intervals can one draw conclusions about the request rate. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">These values are not a direct measurement of CPU or memory usage, nor do they represent a percentage of available web server capacity. A large number of open connections can have various causes and associated costs. To assess the actual load, you therefore need additional resource metrics and information about response times and errors. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Stub Status does not break down the numbers by virtual website or requested URL. If an installation hosts multiple sites, the endpoint alone does not indicate which one is responsible for an increase. If you have multiple NGINX instances, you should record their values separately and assign them unambiguously.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Even retrieving the status page constitutes an HTTP request in itself and has a slight impact on the monitored counters. This should be taken into account when interpreting small volumes of requests or very frequent queries. A single retrieval provides only a snapshot anyway; only the trend over time reveals whether the activity is changing.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"metriken-verstehen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"metriken-verstehen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Distinguishing Between Connections and Requests<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The value <strong style=\"font-weight:700;color:inherit\">Active connections<\/strong> includes active client connections, including those that are waiting. In other words, it counts more than just connections through which a response is currently being transmitted. The \"Reading,\" \"Writing,\" and \"Waiting\" states help put this total number into context, but they do not describe CPU usage or the number of active applications. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">When a request comes in, a connection is in the \"Reading\" state while NGINX reads the request headers. It may then appear in the \u201cWriting\u201d state while NGINX processes or writes the response. This does not mean that bytes are actually flowing to the client the entire time; waiting for an upstream response may also be part of this process.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">If a connection remains open after a response to further requests, it can be treated as <strong style=\"font-weight:700;color:inherit\">Waiting<\/strong> appear. This state includes inactive client connections that are waiting for the next request. A high \"Waiting\" value alone does not therefore indicate overload; it may also be consistent with an environment that uses many reusable connections. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Connections and requests are different quantities: Multiple requests can be sent sequentially over a single keepalive connection. With HTTP\/2, multiple requests can be transmitted over a single connection. Therefore, a fixed number of requests cannot be deduced from the number of open connections, and the `requests` counter does not have to increase at the same rate as the connection counters. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">For practical evaluation, it\u2019s worth comparing data across multiple requests: If \u201cWaiting\u201d increases while response times and errors remain normal, this is initially just an observation and not cause for alarm. The article on explains how to configure reuse and its limits: <a href=\"https:\/\/webhosting.de\/en\/optimizing-nginx-keep-alive-requests-web-server-performance-tuning\/\">NGINX Keepalive Requests<\/a>.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"modul-voraussetzungen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"modul-voraussetzungen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Check Module and Version<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">To use Stub Status, you need an NGINX installation with the module <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">ngx_http_stub_status_module<\/code>, access to its configuration, and, later, the ability to query the protected endpoint from the designated network space. The module is not included by default in the NGINX build. Whether a distribution package includes it depends on the specific package and must be verified locally. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">In the terminal, check the version and the `configure` parameters of the NGINX binary actually used by the service. The following command displays this information; among the parameters, <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">--with-http_stub_status_module<\/code> to the corresponding build option.  <\/p>\n<div class=\"wh-code-window\" data-wh-code style=\"margin:28px 0 34px;border:1px solid #2c4656;border-radius:12px;overflow:hidden;background:#132a3b;box-shadow:0 9px 25px -13px rgba(15,35,55,.2)\"><div class=\"wh-code-toolbar\" style=\"display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:11px 16px;background:#223e50;color:#edf5fa;font-size:13px;line-height:1.5;font-weight:600\"><span>Terminal<\/span><button type=\"button\" class=\"wh-code-copy\" data-wh-copy hidden style=\"padding:6px 11px;border:1px solid #7893a1;border-radius:6px;background:transparent;color:#fff;font-size:12px;line-height:1.5;font-weight:600;cursor:pointer\">Copy code<\/button><span class=\"wh-copy-status\" aria-live=\"polite\"><\/span><span data-wh-copy-success hidden>Copied<\/span><span data-wh-copy-fallback hidden>Code highlighted\u2014please copy<\/span><\/div><pre class=\"wh-code\" data-no-translation translate=\"no\" style=\"display:block;margin:0;padding:20px;max-width:100%;overflow-x:auto;color:#edf5fa;background:#132a3b;font:14px\/1.75 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre;direction:ltr;text-align:left\"><code class=\"language-bash\" style=\"font:inherit;color:inherit;background:transparent;padding:0;border:0;white-space:inherit\">nginx -V<\/code><\/pre><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The decisive factor is the <strong style=\"font-weight:700;color:inherit\">correct binary file<\/strong>: A program launched via the search path <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">nginx<\/code> It may be a different installation than the one used by the service. If in doubt, check the service configuration and the program launch specified there. If necessary, explicitly call the relevant binary file instead of assuming it is part of the production service based on the output from another installation. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The version also affects how the directive is written. Starting with NGINX 1.7.5, <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">stub_status<\/code> Used without an argument; older versions required any argument, such as <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">on<\/code>. The version limit is a compatibility note, not an assumption about which version is installed on your system. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">If the build option is missing from the installation you are testing, you should determine which appropriate package or build is intended for your environment before making any configuration changes. A status location alone does not replace a missing module. Changes to packages and service configurations must follow the applicable operational and approval procedures. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"endpunkt-konfigurieren\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"endpunkt-konfigurieren\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Set Up a Protected Status Endpoint<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">To check the local status, you can use a separate <strong style=\"font-weight:700;color:inherit\">Loopback Listener<\/strong> Set up. The following example is a file configuration for the existing <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">http<\/code>-Context, not a terminal command. This requires that the stub status module be available and that the example port 8088 at the specified address not already be in use by another service. <\/p>\n<div class=\"wh-code-window\" data-wh-code style=\"margin:28px 0 34px;border:1px solid #2c4656;border-radius:12px;overflow:hidden;background:#132a3b;box-shadow:0 9px 25px -13px rgba(15,35,55,.2)\"><div class=\"wh-code-toolbar\" style=\"display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:11px 16px;background:#223e50;color:#edf5fa;font-size:13px;line-height:1.5;font-weight:600\"><span>Code<\/span><button type=\"button\" class=\"wh-code-copy\" data-wh-copy hidden style=\"padding:6px 11px;border:1px solid #7893a1;border-radius:6px;background:transparent;color:#fff;font-size:12px;line-height:1.5;font-weight:600;cursor:pointer\">Copy code<\/button><span class=\"wh-copy-status\" aria-live=\"polite\"><\/span><span data-wh-copy-success hidden>Copied<\/span><span data-wh-copy-fallback hidden>Code highlighted\u2014please copy<\/span><\/div><pre class=\"wh-code\" data-no-translation translate=\"no\" style=\"display:block;margin:0;padding:20px;max-width:100%;overflow-x:auto;color:#edf5fa;background:#132a3b;font:14px\/1.75 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre;direction:ltr;text-align:left\"><code class=\"language-nginx\" style=\"font:inherit;color:inherit;background:transparent;padding:0;border:0;white-space:inherit\">server {\n    listen 127.0.0.1:8088;\n    server_name localhost;\n\n    location = \/stub_status {\n        stub_status;\n        allow 127.0.0.1;\n        deny all;\n    }\n}<\/code><\/pre><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The connection to <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">127.0.0.1<\/code> restricts this listener to the local IPv4 loopback interface. The exact location only maps to the specified path; the directive <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">stub_status<\/code> provides the status data there. This means the listener cannot be reached via other IPv4 interfaces, regardless of whether the other websites are public. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The <strong style=\"font-weight:700;color:inherit\">Access Rules<\/strong> supplement the binding: NGINX checks them in order until the first match is found. The local IPv4 address is allowed; all other addresses are rejected. Because this location contains its own rules, access rules from a parent context are not additionally inherited. Therefore, check the complete configuration before implementing this example. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">With containers, the network space is crucial: An exporter in a separate container accesses its own <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">localhost<\/code> This is not usually the NGINX container's loopback interface. For a remote query, you need a deliberately planned private connection path and appropriate access controls. Do not simply make the status page publicly accessible; it contains operational information.<\/p>\n<figure class=\"wp-block-image size-large wh-figure\" aria-describedby=\"wh-caption-detail1\" style=\"display:block;float:none;clear:both;width:100%;max-width:760px;margin:34px auto 40px;border:1px solid #dae5e9;border-radius:14px;overflow:hidden;background:#f5f8fa;box-shadow:0 10px 28px -17px rgba(24,47,60,.28);box-sizing:border-box\"><div class=\"wh-figure-media\" style=\"display:block;background:#eef3f5;line-height:0\"><img loading=\"lazy\" width=\"800\" height=\"534\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/nginx-status-netzwerkzugang-496e617b-detail1-e747e02c77-1024x683.webp\" class=\"wp-image-22085\" alt=\"An AI-generated stock image of a network connector on a small computer, illustrating the access path.\" decoding=\"async\" srcset=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/nginx-status-netzwerkzugang-496e617b-detail1-e747e02c77-1024x683.webp 1024w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/nginx-status-netzwerkzugang-496e617b-detail1-e747e02c77-300x200.webp 300w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/nginx-status-netzwerkzugang-496e617b-detail1-e747e02c77-768x512.webp 768w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/nginx-status-netzwerkzugang-496e617b-detail1-e747e02c77-18x12.webp 18w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/nginx-status-netzwerkzugang-496e617b-detail1-e747e02c77.webp 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" ><\/div><figcaption class=\"wh-caption\" id=\"wh-caption-detail1\" style=\"display:block;margin:0;padding:12px 18px 15px;border-top:1px solid #dce5e9;color:#506575;background:#f5f8fa;font-size:14px;line-height:1.55;text-align:start\">AI-generated illustrative image: For a protected status endpoint, the network space of the requesting service must be taken into account.<\/figcaption><\/figure><\/section><section class=\"wh-section\" aria-labelledby=\"aktivierung-funktionstest\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"aktivierung-funktionstest\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Check the configuration and retrieve the status<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">After entering the command, first check the configuration in the terminal. The following command checks the syntax and attempts to open the referenced files. Be sure to use the NGINX binary file specific to the service and, if necessary, its different configuration path; a successful check does not yet activate the change. <\/p>\n<div class=\"wh-code-window\" data-wh-code style=\"margin:28px 0 34px;border:1px solid #2c4656;border-radius:12px;overflow:hidden;background:#132a3b;box-shadow:0 9px 25px -13px rgba(15,35,55,.2)\"><div class=\"wh-code-toolbar\" style=\"display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:11px 16px;background:#223e50;color:#edf5fa;font-size:13px;line-height:1.5;font-weight:600\"><span>Terminal<\/span><button type=\"button\" class=\"wh-code-copy\" data-wh-copy hidden style=\"padding:6px 11px;border:1px solid #7893a1;border-radius:6px;background:transparent;color:#fff;font-size:12px;line-height:1.5;font-weight:600;cursor:pointer\">Copy code<\/button><span class=\"wh-copy-status\" aria-live=\"polite\"><\/span><span data-wh-copy-success hidden>Copied<\/span><span data-wh-copy-fallback hidden>Code highlighted\u2014please copy<\/span><\/div><pre class=\"wh-code\" data-no-translation translate=\"no\" style=\"display:block;margin:0;padding:20px;max-width:100%;overflow-x:auto;color:#edf5fa;background:#132a3b;font:14px\/1.75 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre;direction:ltr;text-align:left\"><code class=\"language-bash\" style=\"font:inherit;color:inherit;background:transparent;padding:0;border:0;white-space:inherit\">nginx -t<\/code><\/pre><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">A <strong style=\"font-weight:700;color:inherit\">Approved Reload<\/strong> This is a separate production step. Do not execute it until you have received approval and in accordance with your environment\u2019s operating procedures. When you reload, NGINX reloads the configuration, starts new workers with the new configuration, and shuts down the old workers in an orderly manner. Afterward, verify that the operation was successful and check the logs, rather than assuming that a change has taken effect simply because the syntax check passed. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Once activation has been approved, you can access the endpoint locally on the same network segment using <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">curl<\/code> retrieve. The switch <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">-i<\/code> Displays the HTTP status and headers in addition to the response body. The following example assumes that the listener and path have been specified in the file configuration.<\/p>\n<div class=\"wh-code-window\" data-wh-code style=\"margin:28px 0 34px;border:1px solid #2c4656;border-radius:12px;overflow:hidden;background:#132a3b;box-shadow:0 9px 25px -13px rgba(15,35,55,.2)\"><div class=\"wh-code-toolbar\" style=\"display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:11px 16px;background:#223e50;color:#edf5fa;font-size:13px;line-height:1.5;font-weight:600\"><span>Terminal<\/span><button type=\"button\" class=\"wh-code-copy\" data-wh-copy hidden style=\"padding:6px 11px;border:1px solid #7893a1;border-radius:6px;background:transparent;color:#fff;font-size:12px;line-height:1.5;font-weight:600;cursor:pointer\">Copy code<\/button><span class=\"wh-copy-status\" aria-live=\"polite\"><\/span><span data-wh-copy-success hidden>Copied<\/span><span data-wh-copy-fallback hidden>Code highlighted\u2014please copy<\/span><\/div><pre class=\"wh-code\" data-no-translation translate=\"no\" style=\"display:block;margin:0;padding:20px;max-width:100%;overflow-x:auto;color:#edf5fa;background:#132a3b;font:14px\/1.75 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre;direction:ltr;text-align:left\"><code class=\"language-bash\" style=\"font:inherit;color:inherit;background:transparent;padding:0;border:0;white-space:inherit\">curl -i http:\/\/127.0.0.1:8088\/stub_status<\/code><\/pre><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">A successful HTTP response is expected, with status data as <strong style=\"font-weight:700;color:inherit\">Text<\/strong>, not as JSON. If an error occurs, the status code and NGINX logs can help narrow down the issue. However, a successful local request only shows that this access path works; it does not prove that no other configuration makes the endpoint accessible from the outside. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"werte-und-raten\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"werte-und-raten\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Read Status Values and Calculate Rates<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The output combines current connection statuses with cumulative values. For interpretation, this distinction is more important than the absolute value of a single figure: A <strong style=\"font-weight:700;color:inherit\">Current value<\/strong> describes the state at the time of retrieval; a total counter records the number of events counted up to that point. The table lists the individual fields and typical erroneous conclusions. <\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Stub Status Fields and Their Classification\" style=\"width:100%;max-width:100%;overflow-x:auto;margin:28px 0;border:1px solid #dce5e9;border-radius:14px;background:#fff;box-shadow:0 10px 28px -16px rgba(24,47,60,.32);box-sizing:border-box\"><table style=\"width:100%;min-width:580px;border-collapse:separate;border-spacing:0;border:0;margin:0;font-size:15px;line-height:1.6;background:#fff\"><caption style=\"padding:20px;text-align:start;font-size:17px;line-height:1.5;font-weight:700;color:#173246;background:#fff\">Stub Status Fields and Their Classification<\/caption><thead><tr><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Field<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Type<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Meaning<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Common Misinterpretation<\/th><\/tr><\/thead><tbody><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Active connections<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Current value<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Active client connections, including those in the \"Waiting\" state<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Direct measure of CPU or capacity utilization<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Reading<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Current value<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Connections When Reading the Request Header<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Total number of incoming inquiries<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Writing<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Current value<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Connections in the response processing or write state<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">An even number of bytes are sent on each connection<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Waiting<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Current value<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Inactive client connections waiting for another request<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">In and of itself, proof of overload<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">accepts<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Total Counter<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Total number of client connections accepted<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Currently Open Connections<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">handled<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Total Counter<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Total number of connections processed<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Number of successful HTTP responses<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">requests<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Total Counter<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Total number of client requests counted<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Current requests per second<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">From the counter <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">requests<\/code> an average <strong style=\"font-weight:700;color:inherit\">Inquiry Rate<\/strong> To calculate for an interval: Subtract the first reading from the second and divide the difference by the number of seconds that have elapsed. Illustrative calculation example (not a measurement): If the value rises from 12,000 to 12,600 in 60 seconds, 600 divided by 60 equals an average of 10 requests per second.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">This average does not show either the highest short-term peak or which URLs were accessed. For each request, record the time and the instance accessed. If the counter decreases or you switch between instances, do not interpret the simple difference as a rate without verification; instead, start a new comparison series for the instance in question.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">When comparing intervals of different lengths, use the actual elapsed time rather than the scheduled retrieval interval. For example, a delayed retrieval of two minutes requires a different divisor than a retrieval after one minute. A longer time frame smooths out short-term fluctuations more effectively; shorter intervals make changes more visible but increase the proportion of status queries.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The status query itself is also an HTTP request and has a slight impact on the monitored counters. This becomes particularly noticeable when traffic is very low or when queries are made frequently. A regular, documented query interval makes it easier to take such monitoring-related factors into account when interpreting the data.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">If there are multiple instances, first calculate the rate based on the consecutive values for each individual instance. Only then can the rates for comparable time periods be combined. If a data point is missing or an instance\u2019s assignment changes, the resulting gap should remain visible rather than creating the illusion of a continuous trend.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"betrieb-fehlersuche\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"betrieb-fehlersuche\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Examining Errors and Limitations<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">If the status endpoint returns an HTTP 403 response, first check the actual source address received by NGINX and the access rules for that location. <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">allow<\/code> and <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">deny<\/code> are evaluated in order until the first match is found. Rules specific to the location override any inherited rules, if applicable; they do not automatically supplement them. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">If you get an HTTP 404 error, start by checking elsewhere: Are the port, listener, requested path, and selected server block correct? Also, verify that the intended configuration is actually active after the reload. A successful local request using a different port or path does not prove that the desired location was accessed.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">If no HTTP response is received at all, distinguish between the listener being unreachable and a response with an error status. First, check the address, port, and network space of the requesting process, as well as the service status. Only once a connection to the correct listener has been established will the HTTP status and selected location help narrow down the issue further.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">For ongoing error analysis, it is helpful to compare the total counters <strong style=\"font-weight:700;color:inherit\">accepts and handles<\/strong>. Normally, they are the same. If the difference between them increases, it may be due to a resource limit being reached; however, comparing the counters alone does not reveal either the specific cause or the number of rejected HTTP requests. Therefore, include error logs and configuration settings in your investigation. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">An existing difference initially shows only the gap between the two total counters. To determine whether the situation has changed during the observation period, compare this gap across multiple queries of the same instance. Make a note of the relevant time period so you can search for the corresponding log entries and operational events. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The Directive <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">worker_connections<\/code> Limits the number of connections per worker, not just client connections. This includes, for example, connections to proxied servers; file descriptor limits may also impose restrictions. Calculated as the number of active connections divided by the number of workers, multiplied by <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">worker_connections<\/code> Therefore, this does not provide a reliable picture of capacity utilization. Instead, check the actual limits and the remaining resource consumption in context. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">A change to connection limits should not be based solely on a high status value. First, determine whether a limit has actually been reached and which other resources or upstream connections are involved. Plan any changes while monitoring errors and response times, and review them in accordance with the established operating procedures. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"verlauf-diagnose\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"verlauf-diagnose\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Classifying Trends and Upstream Issues<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">A single status check reflects only a single point in time. Repeated checks at fixed intervals, on the other hand, help determine whether connection states are rising above normal levels or falling back after a spike. Monitor multiple NGINX instances separately and keep track of which instance corresponds to each time series; otherwise, switching between endpoints can distort the trend.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">A high <strong style=\"font-weight:700;color:inherit\">Waiting value<\/strong> Describes waiting, currently inactive client connections. On its own, this is not evidence of overload: With reused connections, clients can wait for additional requests. An increase becomes more meaningful when you compare it to response times, errors, and resource metrics over the same time period. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Remains <strong style=\"font-weight:700;color:inherit\">Writing<\/strong> If the value remains elevated for an extended period, examine both upstream times and client behavior. This status does not mean that bytes are being sent continuously; it may also include the wait time for an upstream response. The \u201cStub\u201d status does not specify the affected backend service or the cause of a delay. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Supplementary data can help with troubleshooting: access logs and recorded upstream times show which requests and backends are causing issues; error logs provide clues about failed connections. If you\u2019re dealing with CPU or memory pressure, you\u2019ll need the corresponding system metrics. If repeated attempts to connect to the backend are affecting the investigation, the article on <a href=\"https:\/\/webhosting.de\/en\/optimally-configuring-nginx-upstream-keepalive-for-a-reverse-proxy-network\/\">NGINX Upstream Keepalive<\/a> the configuration of reusable upstream connections.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"monitoring-entscheidung\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"monitoring-entscheidung\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">From Status to Monitoring<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">For an occasional diagnosis, a secure local status query may be sufficient. It provides information on which metrics the queried instance is currently reporting, but does not store any historical data itself. If you need to compare trends or be notified of persistent anomalies, you\u2019ll need regular data collection and a system for time series and alerts. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The official <strong style=\"font-weight:700;color:inherit\">NGINX Prometheus Exporter<\/strong> There is a separate component for this: It retrieves the stub status and provides the data as Prometheus metrics. Prometheus then retrieves the data from the exporter endpoint. Plan for availability and access restrictions for both paths\u2014that is, both to the status endpoint and to the exporter's metric output. <\/p>\n<figure class=\"wp-block-image size-large wh-figure\" aria-describedby=\"wh-caption-detail2\" style=\"display:block;float:none;clear:both;width:100%;max-width:760px;margin:34px auto 40px;border:1px solid #dae5e9;border-radius:14px;overflow:hidden;background:#f5f8fa;box-shadow:0 10px 28px -17px rgba(24,47,60,.28);box-sizing:border-box\"><div class=\"wh-figure-media\" style=\"display:block;background:#eef3f5;line-height:0\"><img loading=\"lazy\" width=\"800\" height=\"534\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/nginx-exporter-prometheus-abruf-496e617b-detail2-a8f948640e-1024x683.webp\" class=\"wp-image-22086\" alt=\"AI-generated illustration of three separate stations for Status Endpoint, Exporter, and Prometheus.\" decoding=\"async\" srcset=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/nginx-exporter-prometheus-abruf-496e617b-detail2-a8f948640e-1024x683.webp 1024w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/nginx-exporter-prometheus-abruf-496e617b-detail2-a8f948640e-300x200.webp 300w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/nginx-exporter-prometheus-abruf-496e617b-detail2-a8f948640e-768x512.webp 768w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/nginx-exporter-prometheus-abruf-496e617b-detail2-a8f948640e-18x12.webp 18w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/nginx-exporter-prometheus-abruf-496e617b-detail2-a8f948640e.webp 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" ><\/div><figcaption class=\"wh-caption\" id=\"wh-caption-detail2\" style=\"display:block;margin:0;padding:12px 18px 15px;border-top:1px solid #dce5e9;color:#506575;background:#f5f8fa;font-size:14px;line-height:1.55;text-align:start\">AI-generated illustration: The status endpoint and the exporter are separate components whose access paths must be protected.<\/figcaption><\/figure><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">During setup, document which exporter queries which NGINX instance and from where Prometheus reaches the exporter. Especially with separate containers, these are two different network paths. Therefore, an accessible exporter endpoint alone does not replace the need to verify whether the exporter itself can successfully retrieve the correct status page. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">The additional logging does not turn the base metrics into detailed response time or HTTP status class metrics. To investigate slow URLs, error responses, or individual upstreams, appropriate access logs and additional telemetry are required. Even the more comprehensive <strong style=\"font-weight:700;color:inherit\">NGINX Plus API<\/strong> Stub Status in NGINX Open Source should be distinguished from other types; their availability and configuration are not interchangeable.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Select additional data based on the specific question: To determine whether the number of requests is increasing, a simple comparison of the counter over time is sufficient at first. If, on the other hand, the issue involves slow responses or a specific backend service, you\u2019ll need latency and upstream data from the relevant time period. The status page can provide a reason to investigate, but it cannot determine the cause on its own. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Alarm thresholds should be based on the normal behavior of the respective instance and on service objectives, not on a general number for waiting or writing. Compare anomalies with latencies, errors, and available resources, and determine whether an alert actually warrants action. This way, a single counter reading becomes a reason for a targeted investigation rather than a hasty diagnosis.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">When planning alerts, also take into account the failure of the data collection path: Missing data is not the same as zero requests or zero connections. A separate check of reachability helps distinguish a failed retrieval from a situation where activity is actually low. Also, specify who will handle an alert and what additional data must be available for diagnosis.<\/p>\n<\/section><section class=\"wh-sources\" style=\"margin:40px 0 0;padding:24px 0 0;border-top:1px solid #dce5e9;color:#596b7b;font-size:14px;line-height:1.65\"><h2 style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Sources and Current State of Knowledge<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Status of the research: <time datetime=\"2026-11-04\">2026-11-04<\/time><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Research and version status: November 4, 2026. As of NGINX 1.7.5, the `stub_status` directive no longer requires an argument; module availability and the binary file used depend on the installation.<\/p><div class=\"wh-source-urls\"><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/nginx.org\/en\/docs\/http\/ngx_http_stub_status_module.html?from=20423&amp;from_column=20423<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/github.com\/nginx\/nginx-prometheus-exporter<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/mailman.nginx.org\/pipermail\/nginx\/2015-February\/046679.html<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/nginx.org\/en\/docs\/switches.html<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/nginx.org\/en\/docs\/http\/ngx_http_access_module.html<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/nginx.org\/en\/docs\/ngx_core_module.html<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/nginx.org\/en\/docs\/http\/ngx_http_api_module.html<\/span><\/p><\/div><\/section><\/div>","protected":false},"excerpt":{"rendered":"<p>NGINX Stub Status displays connections and request counters as text. Here's how to set up the endpoint securely, interpret the values, and add monitoring if needed.<\/p>","protected":false},"author":1,"featured_media":22084,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[834],"tags":[],"class_list":["post-22079","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-plesk-webserver-plesk-administration-anleitungen"],"acf":[],"_links":{"self":[{"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/posts\/22079","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/comments?post=22079"}],"version-history":[{"count":4,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/posts\/22079\/revisions"}],"predecessor-version":[{"id":22087,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/posts\/22079\/revisions\/22087"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/media\/22084"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/media?parent=22079"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/categories?post=22079"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/tags?post=22079"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}