在CentOS 6.9 x86_64的nginx 1.12.2上开启ngx_req_status模块实录

ngx_req_status是一个第三方模块,它用来展示nginx请求状态信息,类似于apache的status,ats的stats_over_http和channel_stats,nginx自带的模块只能显示连接数等等信息,我们并不能知道到底有哪些请求、以及各url域名所消耗的带宽是多少。ngx_req_status提供了这些功能:

功能特性
按域名、url、ip等等统计信息
统计总流量
统计当前带宽\峰值带宽
统计总请求数量

该模块的官网地址
https://github.com/zls0424/ngx_req_status.git

下载源码并手动打补丁
下载它的源码,发现该模块源码比较早,最新的补丁是write_filter-1.7.11.patch,鉴于当前nginx的版本是1.12.2,最稳妥的方法是
参照该补丁文件,直接手动修改现在的相应源文件(行号相差不太远)
src/http/ngx_http_write_filter_module.c  第263行
相关声明在
src/http/ngx_http.h
src/http/ngx_http.c
src/http/ngx_http_core_module.h

编译
下面开启编译该模块的源码
cd nginx-1.12.2
./configure --with-http_ssl_module \
--with-pcre=/usr/local/src/pcre-8.41 \
--with-zlib=/usr/local/src/zlib-1.2.11 \
--with-openssl=/usr/local/src/openssl-1.1.0g \
--with-http_stub_status_module \
--add-module=/usr/local/src/ngx_cache_purge \
--add-module=/usr/local/src/ngx_req_status
make
make install

配置
在nginx.conf的某个server块中添加
http {
    req_status_zone server_name $server_name     256k;
    req_status_zone server_addr $server_addr     256k;
    req_status_zone server_url  $server_name$uri 256k;

    req_status server_name  server_addr  server_url;

    server {
        server_name localhost;
        location /ngx_req_status {
            req_status_show on;
        }   
    }
}
完整的nginx.conf文件如下:
https://github.com/taoyunxing/github_test/blob/master/nginx.conf

然后检查nginx.conf语法合法性并重启nginx
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
注意重启并不会生效
/usr/local/nginx/sbin/nginx -s reload

指令解释
req_status_zone
语法: req_status_zone name string size
默认值: None
配置块: http
定义请求状态ZONE,请求按照string分组来排列,例如:
req_status_zone server_url  $server_name$uri 256k;
域名+uri将会形成一条数据,可以看到所有url的带宽,流量,访问数

req_status
语法: req_status zone1[ zone2]
默认值: None
配置块: http, server, location
在location中启用请求状态,你可以指定更多zones。

req_status_show
语法: req_status_show on
默认值: None
配置块: location
展示数据

测试
curl -v 'http://127.0.0.1/ngx_req_status'


参考文献 [1].http://www.ttlsa.com/nginx/nginx-modules-ngx_req_status/ [2].https://www.cnblogs.com/onew/p/5186583.html [3].https://github.com/zls0424/ngx_req_status
相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
本站公众号
   欢迎关注本站公众号,获取更多程序园信息
开发小院