在Nginx中启用stub_status
时,可以查询服务器的统计信息:
location /stats {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
我对"处理的请求"度量很感兴趣。问题是,此度量包括为查询当前状态而发送的请求。
有没有办法忽略报告数据中针对/stats
的请求?
正如您在源代码中所看到的,计数器在创建新请求"对象"的那一刻正好递增。也就是说,甚至在解析包括URI在内的任何请求标头之前。所以答案是否定的,不幸的是,没有办法告诉Nginx不要计算对特定URI的请求。
然而,有两种方法可以解决这个问题。不幸的是,它们都涉及到构建自己的Nginx:副本
-
您可以直接修补存根状态模块Nginx,在每次
stub_status
指令生成输出时递减请求conter。要做到这一点,你只需要在这个函数的末尾包括这一行。 -
另一种更合适的方法是引入您自己的模块,该模块也可以做同样的事情。下面是一个快速制作的模块示例。这有点令人惊讶,但你不需要对C有很强的了解就可以创建简单的模块,因为Nginx提供了自己的框架,GitHub上也有数百个例子。