Nginx限连接限速率模块总结

作者: 三杯水Plus | 来源:发表于2018-11-24 21:55 被阅读23次

关于ngx_http_limit_conn_module、ngx_http_limit_req_module 模块,echo(需要安装第三方模块 ngx_http_echo_module),map(默认安装了ngx_http_map_module),geo(默认安装了ngx_http_geo_module)指令请查看官方文档,这里不再赘述。

有四种情况:

  • 不过CDN限速配置
  • 过CDN限速配置
  • 不用白名单的不过CDN
  • 不用白名单的过CDN

首先说明一个问题:
geo里面的IP可以是单个的,也可以是一个网段的,只要符合CIDR标准就行。
map里面的IP必须是当个,因为这里把他看着一个变量。
过CDN的白名单IP只需要客户端IP就行,CND不需要,客户端IP得一行一行写
不过CDN的白名单IP可以写一个网段
关键点limited为空时不走限速。有值的,这里white_ip为1,走限速。

测试方法

可以通过echo模块查看到(这两个都是没有走CDN的):
虚拟主机里echo的配置如下
location /echo {
default_type text/plain;
     echo http_x_forwarded_for: $http_x_forwarded_for;
     echo remote_addr: $remote_addr;
     echo firstAddr: $firstAddr;
     echo clientRealIp: $clientRealIp;
     echo white_ip: $white_ip;
}

这个要限速,没有加入白名单
http://123.11.11.11/echo
http_x_forwarded_for:
remote_addr: 59.12.13.14
firstAddr:
clientRealIp: 59.12.13.14
white_ip: 1
limited: 59.12.13.14

这个不限速,加入了白名单
http://123.11.11.11/echo
http_x_forwarded_for:
remote_addr: 114.11.183.6
firstAddr:
clientRealIp: 114.11.183.6
white_ip: 0
limited:

具体配置

  1. 不过CDN限速配置
nginx.conf里面的配置
geo $white_ip  {
        default 1;
        127.0.0.1 0;
        59.12.13.14  0;
        61.11.12.0/24  0;
......
}

map $white_ip $limited {
        1  $binary_remote_addr;
        0  "";
    }

limit_conn_zone $limited zone=addr:10m;
limit_req_zone  $limited zone=one:10m rate=50r/s;
limit_req_log_level info;
limit_conn_log_level info;

具体域名vhosts配置文件里面的应用
    location / {
          limit_req  zone=one burst=5  nodelay;
          limit_conn addr  100;
          proxy_pass http://my_test_com;
    }
  1. 过CDN限速配置
nginx.conf里面的配置
map $http_x_forwarded_for  $clientRealIpnormal {
        ""      $remote_addr;
        ~^(?P<firstAddr>[0-9\.]+),?.*$  $firstAddr;
}

map $http_http_cdn_src_ip $clientRealIp{
        ""   $clientRealIpnormal;
        default $http_http_cdn_src_ip;
}

map $clientRealIp  $white_ip  {
        default 1;
        127.0.0.1 0;
        59.12.13.14  0;
......

}

map $white_ip $limited {
        1  $clientRealIp;
        0  "";
    }

limit_conn_zone $limited zone=addr:10m;
limit_req_zone  $limited zone=one:10m rate=30r/s;
limit_req_zone  $limited zone=two:10m rate=20r/s;
limit_req_log_level info;
limit_conn_log_level info;

具体域名vhosts配置文件里面的应用
    location / {
          limit_req  zone=two burst=1  nodelay;
          proxy_pass http://mynew_test_com;
    }
  1. 不用白名单的不过CDN
nginx.conf里面的配置
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone  $binary_remote_addr zone=one:10m rate=50r/s;
limit_req_log_level info;
limit_conn_log_level info;

具体域名vhosts配置文件里面的应用
    location / {
          limit_req  zone=one burst=5  nodelay;
          limit_conn addr  100;
          proxy_pass http://my_test_com;
    }
  1. 不用白名单的过CDN
nginx.conf里面的配置
map $http_x_forwarded_for  $clientRealIp {
"" $remote_addr;
~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr;
}

limit_conn_zone $clientRealIp_addr zone=addr:10m;
limit_req_zone  $clientRealIp_addr zone=one:10m rate=50r/s;
limit_req_log_level info;
limit_conn_log_level info;

具体域名vhosts配置文件里面的应用
    location / {
          limit_req  zone=one burst=5  nodelay;
          limit_conn addr  100;
          proxy_pass http://my_test_com;
    }

相关文章

  • Nginx限连接限速率模块总结

    关于ngx_http_limit_conn_module、ngx_http_limit_req_module 模块...

  • Nginx限流

    Nginx限流模块包含 连接数限流模块 ngx_http_limit_conn_module 漏桶算法实现的请求限...

  • nginx限频、限带宽、限连接数

    nginx限频、限带宽、限连接数 背景 业务中需要对ES集群开放公网访问,必须要考虑的就是安全性问题。集群本身带有...

  • limit模块(限制访问速率和最大并发连接数)

    原文地址 Nginx限制访问速率和最大并发连接数模块--limit (防止DDOS攻击) Tengine版本采用h...

  • Nginx限速模块初探

    转载:Nginx限速模块初探 云栖君导读:Nginx限速模块分为哪几种?按请求速率限速的burst和nodelay...

  • [转]Nginx限速模块初探

    转自 Nginx限速模块初探 Nginx限速模块分为哪几种?按请求速率限速的burst和nodelay参数是什么意...

  • Semaphore CountDownLatch CyclicB

    限流可分为并发限流和速率限流。 Semaphore就属于并发限流的实现。 插句话:速率限流一般限的是QPS,即一秒...

  • 基于Redis和配置中心的实时频率限制

    如果使用网关,一般可以在网关进行限频控制;如果使用nginx,也可以使用lua+redis实现分布式限频;但是有的...

  • 限行,限行

    为了应对雾霾,为了身体健康。单双号限行,力度很大,每天一半车出不了门。

  • 限酒,限酒

    “酒是粮食精,越喝越年轻”、“感情深,一口闷;感情浅,抿一点”,就在样,酒桌上你来我往、推杯换盏之间,一个个慢慢地...

网友评论

    本文标题:Nginx限连接限速率模块总结

    本文链接:https://www.haomeiwen.com/subject/hvfuqqtx.html