zoukankan      html  css  js  c++  java
  • Nginx请求限制配置

    Nginx请求限制配置

    请求限制可以通过两种方式来配置,分别是  连接频率限制和请求频率限制

    首先我们要知道什么是http请求和连接,浏览器和服务端首先通过三次握手完成连接,然后发起请求,传输请求参数,服务端接受请求,返回数据到客户端浏览器,这就是  请求和连接。

    现在我们来分别看下  连接频率限制和 请求频率限制是怎么实现。

    1. 连接频率限制
    配置语法:limit_conn_zone key zone=name:size; 
    理解: 我们要限制连接数,那么需要根据一个凭证来限制,比如我们的身份证,假设我限制这一个路口只有xx地区的身份证的不能通过,所以 我们将 key 作为我们的限制依据,例如可以是 ip地址, zone=name 这个是 为这个限制规则设置一个名字,方便下面的语法来调用。 size:是为这个限制开辟多少空间来存储这些 key 信息。
    默认配置:没有配置
    配置路径: http下

    匹配配置语法: limt_conn name number;
    理解:通过上面的语法配置了一个规则,这里通过这个语法来匹配该规则,name是上面定义的连接频率限制规则的name,number是限制连接的个数。
    匹配默认配置: 没有配置
    匹配配置路径: http、server、location下

    2. 请求频率限制
    配置语法: limit_req_zone key zone=name:size rate;
    理解:语法和上面的类似,不同的是在末尾添加了一个 rate速率,例如 1r/s,1秒内限制仅通过一个,
    默认配置: 没有配置
    配置路径: http下

    匹配配置语法: limt_req zone=name 【burst】【nodelay】;
    理解:通过上面的语法配置了一个规则,这里通过这个语法来匹配该规则,name是上面定义的请求限制规则的name,burst和nodelay用中括号包围,表明是 超过本次限制的可以允许多少个请求在下一个频率执行,其余的直接pass
    匹配默认配置: 没有配置
    匹配配置路径: http、server、location下

    ---------------------------------------------------------------------------------------------------------------------------------

    demo配置

    1. 配置,在那个 default.conf文件中添加以下配置

    2. 重新加载nginx服务
    service nginx reload;

    3. 使用ab测试工具
    输入一下命令  ab -n 20 -c 20 http://192.168.78.xxx/1.html 查看结果
        方便的话可以用另一个窗口查看日志,例如  使用  tail -f 命令即可,具体如下

    从这个图中可以看出,我们设置请求20次,发现尽管我们设置了 连接频率限制但是这个不是绝对的。


    下面我们来测试 请求频率,修改配置如下



    再次按照上面的步骤来看看效果


    从这个图中可看出  我们请求了20次,结果是 失败有19次,再看看日志打印结果,可以更加清楚看出。


    下面我们再添加 延迟参数看看效果,修改配置如下,设置了延迟3个请求到下一秒

    现在重新加载nginx,打印日志,看看结果

    可以看到,20个请求有4个通过,表示配置成功,看看日志


    至此,nginx请求限制配置完毕。

  • 相关阅读:
    @WebFilter注解
    Value '0000-00-00' can not be represented as java.sql.Date解决办法
    项目配置 xml文件时 报错提示(The reference to entity "useSSL" must end with the ';' delimiter.)
    eclipse中取消自动生成的TODO Auto-generated method stub
    eclipse中把选中的代码全部变成大写或者小写的快捷键
    在浏览器访问Tomcat的时候报错java.lang.IllegalArgumentException: Control character in cookie value or attribute.
    Tomcat报错,内存溢出的错误Exception in thread "http-bio-8080-exec-13" java.lang.OutOfMemoryError: PermGen space
    java.io.Serializable的作用
    idea快捷键总结
    MYSQL分页limit速度太慢优化方法
  • 原文地址:https://www.cnblogs.com/duguxiaobiao/p/9128810.html
Copyright © 2011-2022 走看看