Nginx 手记(三)请求限制
Nginx 手记(三)请求限制
神奇Sam 发表于3个月前
Nginx 手记(三)请求限制
  • 发表于 3个月前
  • 阅读 435
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

前言

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
标签: nginx centos Linux
共有 人打赏支持
粉丝 16
博文 41
码字总数 27998
×
神奇Sam
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: