Enable Nginx Status Page

Nginx status page can give realtime data about Nginx’s health. It can help you tweak few Nginx config. Status data can be used in load-balancer env also.

Requirement

Nginx must be compiled with HttpStubStatusModule module. You can check that by running following command:

nginx -V 2>&1 | grep -o with-http_stub_status_module

If you see following output, you are good to go ahead. Otherwise, refer this post to install nginx-full.

with-http_stub_status_module

Nginx Config

You need to add following to a nginx site, say example.com, inside server {..} block.

        location /nginx_status {
          stub_status on;
          access_log   off;
          allow 1.1.1.1;
          deny all;
        }

Make sure you replace 1.1.1.1 with your machine’s IP-address. It’s good idea to keep this page accessible to only you.

Output:

Once you codes and reload nginx config, just visit: http://example.com/nginx_status You will see output like below:

Active connections: 43 
server accepts handled requests
 7368 7368 10993 
Reading: 0 Writing: 5 Waiting: 38

Interpretation

  • Active connections – Number of all open connections. This doesn’t mean number of users. A single user, for a single pageview can open many concurrent connections to your server.
  • Server accepts handled requests – This shows three values.
    • First is total accepted connections.
    • Second is total handled connections. Usually first 2 values are same.
    • Third value is number of and handles requests. This is usually greater than second value.
    • Dividing third-value by second-one will give you number of requests per connection handled by Nginx. In above example, 10993/7368, 1.49 requests per connections.
  • Reading – nginx reads request header
  • Writing – nginx reads request body, processes request, or writes response to a client
  • Waiting – keep-alive connections, actually it is active – (reading + writing).This value depends on keepalive-timeout. Do not confuse non-zero waiting value for poor performance. It can be ignored. Although, you can force zero waiting by setting keepalive_timeout 0;

8 responses to “Enable Nginx Status Page”

  1. By adding this /nginx_status to a server block would it only show data for that site or for the entire server?

    • Yep.

      About “where” – if you want to monitor nginx@proxy, copy-paste above config in nginx@proxy.

      If you want to monitor nginx@backend, then copy-paste above config in nginx@backend.

      You can also monitor both using different location like `/nginx_status_proxy` and `/nginx_status_backend`.

  2. I’m using easy engine.
    I try this tutorial to view nginx_status on my site.
    But it turns to forbidden. I disable security by comment on ‘allow ip.add.re.ss
    But it same.. I got 403 forbidden when i trying access from my site.

    What must i do to enable it and turn into 200 response. not 403.
    Thanks 🙂

  3. Compiled and used the added the line to the /sites-enabled/domain.com. Entered the correct ip number too.

    But I’m getting a 404 error. All of my site is https. Could this be the problem?