限流保护——nginx限流模块

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

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

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

复制代码
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请求数

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

    rate=5r/m:表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,还可以有比如1r/s

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

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

    nodelay:如果设置,超过访问频次而且缓冲区也满了的时候就会直接返回503,如果没有设置,则所有请求会等待排队

    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

猜你喜欢

转载自www.cnblogs.com/ExMan/p/11795119.html