限流保护——nginx限流模块

1.限制请求次数——limit_req_zone模块html

  a.意义:limit_req_zone 表示限制单位时间内的请求数,即速率限制,采用的漏桶算法node

  a.在 conf/nginx.conf 配置文件中添加nginx

复制代码
http {

    ......

    #限制请求次数参数
    limit_req_zone $binary_remote_addr zone=one:10m rate=5r/m;

    ......

    server {

        ......

        location /printProducer {

            ......

            #限制请求次数
            limit_req zone=one burst=10 nodelay;
            #自定义返回码
            limit_req_status 598;

            ......

        }
复制代码

 

  b.参数说明:算法

    $binary_remote_addr:表示经过remote_addr这个标识来限制同一客户端ip请求数spa

    zone=one:10m:表示生成一个大小为10M,名字为one的内存区域,用来存储访问的频次信息.net

    rate=5r/m:表示容许相同标识的客户端的访问频次,这里限制的是每秒1次,还能够有好比1r/scode

    zone=one:表示使用哪一个配置区域来作限制,与上面 limit_req_zone 里的name对应server

    burst=5:表示设置一个大小为5的缓冲区当有大量请求(爆发)过来时,超过了访问频次限制的请求能够先放到这个缓冲区内htm

    nodelay:若是设置,超过访问频次并且缓冲区也满了的时候就会直接返回503,若是没有设置,则全部请求会等待排队blog

    limit_req_status 598:设置拒绝请求的返回值。值只能设置 400 到 599 之间(默认是503)

 

 

2.限制下载速度

  a.在 conf/nginx.conf 配置文件中添加

复制代码
http {

    ......

    server {

        ......

        location /download{

            ......

            #不限速阈值
            limit_rate_after 10m;
            #超过阈值限制速度
            limit_rate 10k;

            ......

        }
复制代码

 

  b.参数说明:

    limit_rate_after 10m:表示前 10m 大小时不限速

    limit_rate 10k:表示超过 limit_rate_after 后以 10kb/s 限速

 

 

3.参考文章:

  https://www.cnblogs.com/biglittleant/p/8979915.html

  https://my.oschina.net/gaga/blog/495444

相关文章
相关标签/搜索