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

在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

更多相关:

  • Nginx中的stub_status模块主要用于查看Nginx的一些状态信息.  本模块默认是不会编译进Nginx的,如果你要使用该模块,则要在编译安装Nginx时指定: ./configure --with-http_stub_status_module  基础的nginx搭建参见本博博文 http://blog.cs...

  • 下面是几个常用命令行工具,先截图,再描述 在生成环境调试的命令 sudo gdb ./traffic_server -p $(pidof traffic_server)  -batch  -x  [macro_file] 参考文献 [1].ATS Debugging Fall Summ...

  • Page1.aspx:   <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Page1.aspx.cs" Inherits="Application.跨页面传送.Page1" %>  

  • 在下面的例子中,我们在一个 .aspx 文件中声明了一个 TextBox 控件和一个 Label 控件。当您更改了 TextBox 中的值,并且在 TextBox 外单击时,change 子例程就会被执行。change 子例程会向 Label 控件写一条文本: