功能特性
按域名、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