nginx模块讲解

nginx模块讲解


一、编译安装 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;
      ...
    }
    ...
  }
  ...
}

你可能感兴趣的:(Nginx学习篇)