一、编译安装 nginx的http_stub_status_module监控其运行状态
步骤:
1 编译nginx,加上参数 --with-http_stub_status_module
2 修改nginx配置文件,添加监控状态配置,在nginx.conf的server块中添加如下代码
location /nginx_status {
# Turn on nginx stats
stub_status on;
# I do not need logs for stats
access_log off;
# Security: Only allow access from 192.168.1.100 IP #
#allow 192.168.1.100;
# Send rest of the world to /dev/null #
#deny all;
}
3.这段代码是加在默认的server里的,假设默认server的配置为
listen 127.0.0.1:80;
server_name 127.0.0.1;
那么访问nginx的状态,就可以通过 curl 127.0.0.1/nginx_status访问了
4.返回结果类似于:
Active connections: 1
server accepts handled requests 655 655 1985
Reading: 0 Writing: 1 Waiting: 0
5.相关数据说明
Active connections: 对后端发起的活动连接数.
Server accepts handled requests: Nginx总共处理了655 655 1985个连接,成功创建38810620次握手(证明中间没有失败的),总共处理了298655730个请求.
Reading: Nginx 读取到客户端的Header信息数.
Writing: Nginx 返回给客户端的Header信息数.
Waiting: 开启keep-alive的情况下,这个值等于 active – (reading + writing),意思就是Nginx已经处理完成,正在等候下一次请求指令的驻留连接.所以,在访问效率高,请求很快被处理完毕的情况下,Waiting数比较多是正常的.如果reading +writing数较多,则说明并发访问量非常大,正在处理过程中.
二、random index介绍
1.ngx_http_random_index_module模块处理以'/'为后缀的请求,并且在当前目录下随机抽取一个页面作为首页.这个模块将在ngx_http_index_module模块之前执行. 默认情况下,这个模块没有安装,你需要在安装nginx的时候加上配置参数--with-http_random_index_module.
2.随机首页配置
location / {
random_index on/off;
}
3.语法
语法: random_index on | off;
默认值: random_index off;
配置段: location
启用或者禁用random index模块
三、ngx_http_sub_module模块
1.它修改网站响应内容中的字符串,比如你想把响应内容中的‘hello world’全部替换成‘你好 世界’,这个模块已经内置在nginx中,但是默认未安装,需要安装需要加上配置参数:--with-http_sub_module。
2.配置
server {
listen 80;
server_name 192.168.206.48;
root /data/site/yingda;
location / {
sub_filter hello world '你好 世界';
sub_filter_types text/html; #指定需要被替换的MIME类型,默认为“text/html”,如果制定为*,那么所有的
sub_filter_once on/off;#替换 一次/所有
}
}
四、nginx限制请求数(ngx_http_limit_req_module)模块
1.可以限制来自单个IP地址的请求处理频率。 限制的方法如同漏斗,每秒固定处理请求数,推迟过多请求。
2.该模块提供了两个配置参数,limit_req_zone 和 limit_req ,其中limit_req_zone 只能配置在 http{} 段,而 limit_req 则可以配置于http{},server{},location{} 区段中。
3.语法:
limit_req_zone $variable zone=name:size rate=rate; #主要是用来定义变量,空间名称,以及共享内存大小。
limit_req zone=name burst=100 nodelay; #主要是用来使用前面定义的空间,定义请求频率限制,限制频率每秒不超过一个请求,同时允许超过频率限制的请求数不多于100个;如果不希望超过的请求被延迟,可以用nodelay参数。
http{
...
#定义一个名为allips的limit_req_zone用来存储session,大小是10M内存,
#以$binary_remote_addr 为key,限制平均每秒的请求为20个,
#1M能存储16000个状态,rete的值必须为整数,
#如果限制两秒钟一个请求,可以设置成30r/m
limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;
...
server{
...
location {
...
#限制每ip每秒不超过20个请求,漏桶数burst为5
#brust的意思就是,每秒超过25个的请求返回503错误。
#nodelay,如果不设置该选项,严格使用平均速率限制请求数,
limit_req zone=allips burst=5 nodelay;
...
}
...
}
...
}