zoukankan      html  css  js  c++  java
  • nginx防ddos配置

    Nginx  limit_zone与limit_req_zone

    (防DDOS攻击模块)

    http {

    limit_req_zone $binary_remote_addr zone=one:100m   rate=10r/m;

    server {

                      …………………….

                      …………………….

              limit_req   zone=one  burst=1  nodelay;

        ………………….

    }

    }

    rate=10r/m 的意思是每个地址每分钟只能请求10次,也就是说根据令牌桶原理burst=1 一共有1块令牌,并且每分钟只新增10块令牌,
    1块令牌发完后多出来的那些请求就会返回503

    加上 nodelay之后超过 burst大小的请求就会直接返回503

    如果没有该字段会造成大量的tcp连接请求等待。

    http{
    limit_zone one  $binary_remote_addr  10m;
    server
    {
    ......
    limit_conn   one  1;
    ......
    }
       }

    这里的 one 是声明一个 limit_zone 的名字,$binary_remote_addr是替代 $remore_addr 的变量,10m 是会话状态储存的空间
    limit_conn one 1 ,限制客户端并发连接数量为1

    nginx_limit_req介绍

    一、nginx 限制连接模块介绍

    a)nginx 上有两个限制连接的模块一个是 limit_zone 另一个是 limie_req_zone,两个都可以限制连接,但具体有什么不同呢?
    下面是 nginx 官网上给的解释

    b)limit_req_zone
    Limit frequency of connections from a client.
    This module allows you to limit the number of requests for a given session, oras a special case, with one address.
    Restriction done using leaky bucket.

    c)limit_zone
    Limit simultaneous connections from a client.
    This module makes it possible to limit the number of simultaneous connectionsfor the assigned session or as a special case, from one address.

    d)按照字面的理解,lit_req_zone的功能是通过令牌桶原理来限制用户的连接频率,(这个模块允许你去限制单个地址指定会话或特殊需要的请求数 )
    而 limit_zone 功能是限制一个客户端的并发连接数。(这个模块可以限制单个地址的指定会话或者特殊情况的并发连接数)
    一个是限制并发连接一个是限制连接频率,表面上似乎看不出来有什么区别,那就看看实际的效果吧~~~
    在我的测试机上面加上这两个参数下面是我的部分配置文件

    e)http{
    limit_zone one  $binary_remote_addr  10m;
    #limit_req_zone  $binary_remote_addr  zone=req_one:10m rate=1r/s;
    server
    {
    ......
    limit_conn   one  1;
    #limit_req   zone=req_one  burst=120;
    ......
    }
    }

    f)解释一下 limit_zone one  $binary_remote_addr  10m;
    这里的 one 是声明一个 limit_zone 的名字,$binary_remote_addr是替代 $remore_addr 的变量,10m 是会话状态储存的空间
    limit_conn one 1 ,限制客户端并发连接数量为1

    二、limit_zone两种工作情况

    a)limit_reqzone=one burst=10 ;

    i.默认情况下是这样配置的,这样每个请求就会有一个delay时间,

    ii.Eg:limit_req_zone$binary_remote_addr zone=one:100m rate=10r/m;

    就是每分钟有10个令牌供用户使用,按照a的配置情况,就会有一个delay,每个请求时间就是60/10,那每个请求时间就是6s。

    b)limit_reqzone=one burst=10 nodelay;

    i.添加nodelay配置,这样就是根据你的网络状况访问,一分钟访问够10次后,服务器直接返回503。

    ii.Eg:imit_req_zone$binary_remote_addr zone=one:100m rate=10r/m;

    就是每分钟有10个令牌供用户使用,按照b的配置情况,就会根据网络情况访问url,如果一分钟超过10个令牌,服务器返回503,等待下一个一分钟领取访问令牌。

  • 相关阅读:
    项目游戏开发日记 No.0x000002
    项目游戏开发日记 No.0x000001
    项目游戏开发日记 No.0x00000
    需求获取常见的方法是进行客户访谈,结合你的实践谈谈会遇到什么问题,你是怎么解决的?
    当下大部分互联网创业公司为什么都愿意采用增量模型来做开发?
    迷茫踌躇的2018,整装待发的2019
    阿里云轻量应用服务器 搭建配置详解
    JS常用数组方法及实例
    使用CSS隐藏HTML元素的四种常用方法
    标签种类及CSS引入方法
  • 原文地址:https://www.cnblogs.com/lixiaoran/p/6868312.html
Copyright © 2011-2022 走看看