首先给出配置段:

http {

    limit_conn_zone $binary_remote_addr zone=one:10m;

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

    ...

    server {

    ...

        location /download/ {

         limit_rate 500k;

         limit_rate_after 50m;

         limit_conn one 1;

       limit_req zone=one burst=5;
    }   ...
}

  

1、 limit_rate指令

  limit_rate开启nginx限速功能,可配置在http、server、location和if in location配置段。 limit_rate 500k表示限速500kB每秒,限速对象是单个连接,因此如果一个IP有多个连接的话,每个连接都是限速500k。limit_rate还有在特定情况下开启限速的功能。

limit_rate_after和 limit_rate配合使用表示在下载的文件大小达到设定数后开启限速效果(逐渐降速)。同样针对于单个连接。设定大小设置太小的话可能效果不准确。

2、Module ngx_http_limit_conn_module 模块

  limit_conn_zone $binary_remote_addr zone=one:10m模块开启对单个ip、单个会话同时存在的连接数的限制。这里定义一个记录区one,one的总容量是10m,该记录区针对于变量 $binary_remote_add生效,这里是针对单个IP生效。该模块只是一个定义,配置在http配置段,需要配合limit_conn指令使用才生效, limit_conn one 1表示该location段使用one定义的 limit_conn_zone ,对单个IP限制同时存在一个连接。

PS:limit_conn_zone0.8版本之前叫

与现在有一定的差别。

3、ngx_http_limit_req_module 模块

  limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s模块开启对单个ip、单个会话在单位时间内请求的限制。这里zone和limit_conn_zone模块一样,rate表示限制的速率,1r/s表示一秒之内最多1次请求,也可以用5r/m,表示一分钟之内最多5次请求。limit_req_zone同样配置在http配置段。与limit_req指令配合使用才生效。limit_req zone=one burst=5表示该location段使用one定义的limit_req_zone,如果请求数超过 rate=1r/s,剩下的请求将被延迟处理,如果请求数超过burst定义的数量,多余的请求则直接返回503错误。

如果开启nodelay,则超过rate=1r/s的请求直接返回503,不再延迟处理。

Nginx 配置对流量、连接和请求的限制的更多相关文章

  1. Nginx配置HTTPS并将HTTP请求重定向到HTTPS

    个人博客 地址:https://www.wenhaofan.com/a/20190702214652 在阿里云获取免费的HTTPS证书 配置HTTPS之前首先需要拥有HTTPS证书,在阿里云可以获得域 ...

  2. Nginx配置语法和日志

    nginx配置 配置文件 重启服务 http请求 nginx日志 一共有两个日志文件 在配置文件中添加这个,就可以在日志文件中看到请求的userAgent 配置语法的检查 nginx重新加载配置 发送 ...

  3. Nginx与Tomcat、Client之间请求的长连接配置不一致问题解决[转]

    http://bert82503.iteye.com/blog/2152613 前些天,线上出现“服务端长连接与客户端短连接引起Nginx的Writing.Active连接数过高问题”,这个是由于“服 ...

  4. nginx配置长连接(ajax60秒请求超时)

    个人博客 地址:http://www.wenhaofan.com/article/20180911150337 1.在使用ajax做轮训的时候前台发出的ajax请求总是会在60秒之后返回405超时响应 ...

  5. Nginx 流量带宽等请求状态统计( ngx_req_status)

    Nginx 流量带宽等请求状态统计 ( ngx_req_status)  插件下载地址: wget http://nginx.org/download/nginx-1.4.2.tar.gz git c ...

  6. nginx配置长连接

    http { keepalive_timeout 20; --长连接timeout keepalive_requests 8192; --每个连接最大请求数 } events { worker_con ...

  7. centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课

    centos   LB负载均衡集群 三种模式区别 LVS/NAT 配置  LVS/DR 配置  LVS/DR + keepalived配置  nginx ip_hash 实现长连接  LVS是四层LB ...

  8. nginx配置socket连接

    author: headsen  chen date:  2019-08-08 18:52:36 notice :个人原创 Nginx通过在客户端和后端服务器之间建立隧道来支持WebSockets通信 ...

  9. Nginx配置TCP请求转发

    Nginx配置TCP请求转发 1.TCP请求转发基于stream在1.9版本前,需要单独编译安装该组建: # 依赖服务 [root@baolin conf]#yum -y install pcre-d ...

随机推荐

  1. css 图片增加模糊效果

    img{ -webkit-filter: blur(5px); -moz-filter: blur(5px); -ms-filter: blur(5px); filter: blur(5px); }

  2. Head First C 笔记

    嗨翻c语言 1. 入门 为什么字符从零开始编号? 字符的索引数值表示的是一个偏移量,它表示的是当前所引用的字符与第一个字符之间差多少个字符. 单双引号的区别? 单引号 一个字符,双- 字符串 字符串字 ...

  3. Mysql给某一台主机授权访问,修改root密码

    ubuntu上用的是phpstudy,安装好之后,敲mysql,提示没有,需要安装mysql的客户端. 安装好之后直接敲mysql,敲 mysql 再敲use mysql 再敲mysql -uroot ...

  4. Android浏览器访问java web的方法

    以前自己也做过Android程序,可以和服务器通信,通过json来存取数据,当时是在APP中直接存取数据的,而这次我打算在手机浏览器中获得服务器传过来的Json参数,后来才发现其实很简单的,首先需要手 ...

  5. Django在form提交CSRF验证失败. 相应中断问题

    CSRF验证失败. 相应中断. 1).首先,我们可以先看一下出现问题的所在的原因. Your browser is accepting cookies. The view function passe ...

  6. POJ - 2698 贪心

    经典面替换算法,每次选择最远的那个碟片请求进行替换. AC代码 #include <cstdio> #include <cmath> #include <algorith ...

  7. Machine Learning|Andrew Ng|Coursera 吴恩达机器学习笔记

    Week1: Machine Learning: A computer program is said to learn from experience E with respect to some ...

  8. dwr3+spring实现消息实时推送

    最近项目要实现一个消息推送的功能,主要就是发送站内信或者系统主动推送消息给当前在线的用户.每次的消息内容保存数据库,方便用户下次登录后也能看到.如果当前用户在线,收到站内信就主动弹出提示.一开始想到的 ...

  9. Hadoop分布式集群配置

    硬件环境: 安装一个Hadoop集群时,需要专门指定一个服务器作为主节点. 三台虚拟机搭建的集群:(搭建集群时主机名不能一样,主机名在/etc/hostname修改) master机器:集群的主节点, ...

  10. Json序列化、反序列化

    引用 using Newtonsoft.Json; using Newtonsoft.Json.Converters; 把Json字符串反序列化为对象 1.目标对象 = JavaScriptConve ...