Nginx 手记(三)---请求限制

前言

HTTP协议的连接与请求
0、完成HTTP请求前,需要完成TCP的三次握手
1、HTTP请求建立在一次TCP连接基础上
2、一次TCP连接至少产生一次HTTP请求

一、概念

1、连接配置
#开辟一个空间存储连接状态
#key:指定存储的key,如:用客户端的ip作为key,那么限制的就是ip
#name:指定空间名字
#size:指定空间大小 
语  法:limit_conn_zone key zone=name:size
默认值:无
上下文:http

#使用连接限制
#zone:指定上面配置的zone的名字
#number:限制并发数
语法:limit_conn zone number;
默认值:无
上下文:http,server,location
2、请求配置
#key:指定存储请求的key

#name:指定空间名字

#size:指定空间大小 

#rate:请求的限制,以秒为单位,限制每秒请求个数,如:1r/s 每秒一个请求

语法:limit_req_zone key zone=name:size rate=rate;

默认值:无

上下文:http

#zone:指定上面配置的zone的名字

#burst:客户端请求超过速率以后,指定number个遗留到下一秒执行

#nodelay:其他超过速率的请求将不延迟返回

语法:limit_req zone=name [burst=number] [nodelay]

默认值:无

上下文:http,server,location

二、配置实例

在/etc/nginx/conf.d 修改的default.conf配置,内容如下:
[root@sam ~]# vim /etc/nginx/conf.d/default.conf

#定义限制连接的存储空间,以ip地址作为key进行限制,空间大小为1m

limit_conn_zone $binary_remote_addr zone=conn_zone:1m;

#定义请求访问的存储空间,以ip地址作为key进行限制,空间大小为1m,限制速率为每秒一次请求

limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;

server {

   listen       80;

   server_name  localhost;

   #charset koi8-r;

   #access_log  /var/log/nginx/host.access.log  main;

   location / {

       root   /opt/site/sam;

       #limit_conn conn_zone 1;                    #配置连接限制

       #limit_req zone=req_zone burst=3 nodelay;   #配置请求限制,指定遗留3个请求到下一秒执行,其他请求无延时返回

       #limit_req zone=req_zone burst=3;

       limit_req zone=req_zone;

       index  index.html index.htm;

   }

   #error_page  404              /404.html;

   # redirect server error pages to the static page /50x.html

   #

   error_page   500 502 503 504  /50x.html;

   location = /50x.html {

       root   /usr/share/nginx/html;

   }

}
重新加载 nginx 配置
nginx -s reload -c /etc/nginx/nginx.conf 

或

systemctl reload nginx
使用ab测试工具进行压测
ab -n 20 -c 20 [http://localhost/index.html](http://localhost/index.html)

你可能感兴趣的:(Nginx 手记(三)---请求限制)