Nginx stub_status: 忽略自己的请求

Nginx stub_status: Ignore own requests

在Nginx中启用stub_status时,可以查询服务器的统计信息:

location /stats {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
}

我对 "requests handled" 指标感兴趣。问题在于此指标包括发送的查询当前状态的请求。

有没有办法忽略报告数据中针对 /stats 的请求?

如您在 source code 中所见,计数器在创建新请求 "object" 时恰好递增。也就是说,甚至在解析任何请求 header 之前,包括 URI。所以答案是否定的,不幸的是没有办法告诉 Nginx 不计算特定 URI 的请求。

不过,有两种方法可以解决这个问题。不幸的是,它们都涉及构建您自己的 Nginx 副本:

  1. 您可以修补 stub status module Nginx directly, decrementing request conter every time the stub_status directive generates the output. To do this you only need to include this line at the end of this function

  2. 另一种更合适的方法是引入您自己的模块,其功能完全相同。这是一个快速制作的 example 这样的模块。有点令人惊讶,但您不需要精通 C 来创建简单的模块,因为 Nginx 为此提供了自己的框架,并且 GitHub.

    [=25= 上还有数百个示例可用]