今天在实践nginx的stubstatus的模块的时候,虚拟机可以,上服务器就不行了。搞了1个多小时。其实也就几行配置文件。

编辑nginx.conf文件

location /NginxStatus {

         stub_status         on;

         access_log         logs/NginxStatus.access.log;

         auth_basic         "NginxStatus";

         auth_basic_user_file         ../htpasswd;

}

htpasswd是通过apache中的htpasswd模块实现的,/usr/loca/apache/bin/htpasswd -c /usr/local/nginx/htpasswd moon

然后输入密码2次,

在配置文件中添加的那一段的意思:

auth_basic 是一种linux的认证机制。

auth_basic_user_file 通过htpasswd的模块生成一个moon用户,和密码。

stub_status         on;激活stubstatus模块。


在安装前首先要确定安装有http_stub_status_module模块,

[root@centos logs]# /usr/local/nginx/nginx -V
nginx version: nginx/1.4.2
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-54)
TLS SNI support enabled
configure arguments: --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.21 --with-zlib=/usr/local/src/zlib-1.2.8 --with-openssl=/usr/local/src/openssl-1.0.1c --with-http_stub_status_module --with-http_gzip_static_module

通过-V查看所有模块。


若没有此模块,需要重新编译。

进入nginx源码包。然后./configure  --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.21 --with-zlib=/usr/local/src/zlib-1.2.8 --with-openssl=/usr/local/src/openssl-1.0.1c --with-http_stub_status_module --with-http_gzip_static_module


编译完后,make,切记不要make install(不然会覆盖原来的安装)。

然后将现在的nginx文件备份。mv /usr/local/nginx/nginx /usr/local/nginx/nginx.bak

将objs中的nginx cp 到/usr/local/nginx/下。


关键的一步来了。这里不能./nginx -s reload,热起会将PID继续沿用,也就是说 虽然你用了现在的nginx文件,但是应用的配置还是老的nginx.bak。

所以日志一直会报错

意思就是没有stub_status 这个模块。

所以需要./nginx -s stop 在./nginx就好了


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐