这篇文章发布于2013年,介绍如何为nginx添加模块,由于时间久远可能有些内容已经过时,不过"静态添加模块"方法仍然可以使用(从1.9.11版本开始支持load_module动态加载模块),文中的示例为nginx添加 stub_status模块,这个模块用于查看nginx的基本状态信息,对于运维人员来说很有用,建议掌握使用方法。
使用 nginx -V 数可以查看 nginx的编译配置参数,记好这些配置参数接下来我们还用使用。
nginx -V
nginx version: nginx/1.2.3
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-46)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx \
--with-pcre=../pcre-8.12/ \
--with-openssl=/usr/local/openssl/ \
--with-http_ssl_module --with-http_flv_module \
--with-http_gzip_static_module \
--user=www --group=www
从输出的信息来看当前的 nginx 并没有 stub_status 模块信息(默认没有启用),所以需要重新编译nginx 并指定 stub_status模块。
下载相同版本nginx 源码包,复制当前的nginx编译参数,在配置项末尾添加 stub_status 模块。
tar zxf nginx-1.2.3.tar.gz
tar zxf pcre-8.12.tar.gz
cd nginx-*/
./configure --prefix=/usr/local/nginx \
--with-pcre=../pcre-8.12/ \
--with-openssl=/usr/local/openssl/ \
--with-http_ssl_module --with-http_flv_module \
--with-http_gzip_static_module \
--user=www --group=www \
--with-http_stub_status_module
make
注意: 我们只需要 make编译就好,并不需要 make install 步骤。
替换编译好的 nginx 二进制文件。
nginx -s stop
cp /usr/local/nginx/sbin/nginx /tmp/nginx.old
cp nginx-1.2.3/objs/nginx /usr/local/nginx/sbin/
编译并替换后就可以使用 stub_status模块了,nginx配置文件添加如下配置项。
server
{
#... 其它配置项省略
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
启动nginx
nginx -t && nginx
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
curl http://localhost/nginx_status
Active connections: 1
server accepts handled requests
97246 97246 97246
Reading: 0 Writing: 1 Waiting: 0
信息含义
active connections - 活跃的连接数量
server accepts handled requests - 收到 97246次连接 ,完成 97246次握手, 共处理 97246个请求
reading - 读取客户端的连接数。
writing - 响应数据到客户端的数量。
waiting - 开启 keep-alive 的情况下,这个值等于 active – (reading+writing)。
最后来总结下文章中的知识点