当前位置:   article > 正文

nginx的限速和限制并发连接数、限制请求数_nginx防止大量请求

nginx防止大量请求
nginx的限速和限制并发连接数、限制请求数
  1. 限速(Rate Limiting): 限速允许你控制对服务器的请求速率,以防止过多的请求影响服务器性能。使用 limit_req_zone 指令定义一个共享内存区域,并在 location 块中使用 limit_req 指令来限制请求速率

    示例配置:

    nginxCopy codehttp {
    	# 基于客户机的IP地址,每秒产生一个通行证(令牌通算法)
        limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    
        server {
            location / {
            	# 限制请求速率,最多同时一个IP发起5次请求
                limit_req zone=one burst=5;
                # 限制文件下载速度为10k/s
                limit_rate 10k;
                # 当文件下载速度达到100k/s时限制他
                # 1m就是1M/s
                limit_rate_after 100k;
                ...
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在上述配置中,每秒钟只允许一个请求,并且允许突发(burst)5个请求。这可以有效地限制请求的速率。

    请求报错状态码为503

  2. 限制并发连接数(Limit Connections): 通过限制同时连接到服务器的客户端数量,可以防止服务器过载。使用 limit_conn_zone 指令定义一个共享内存区域,并在 location 块中使用 limit_conn 指令来限制并发连接数。

    示例配置:

    nginxCopy codehttp {
    	# 名为addr,在内存中开辟一个10M的空间来存放用户的连接信息(基于IP)
        limit_conn_zone $binary_remote_addr zone=addr:10m;
        # 基于server(服务器域名)
        limit_conn_zone $server_name zone=perserver:10m;
    
        server {
            location / {
            	# 限制一个IP地址只能同时发起5个并发链接
                limit_conn addr 5;
                # 限制一个月拟主机同时只能发起100个并发连接
                limit_conn perserver 100;
                ...
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    限制并发连接数,报错时的状态码为503

  3. 限制请求数(Limit Requests): 通过限制在一段时间内允许的最大请求数,可以防止服务器被大量请求过载。使用 limit_req_zone 指令定义一个共享内存区域,并在 location 块中使用 limit_req 指令来限制请求数。

    示例配置:

    nginxCopy codehttp {
        limit_req_zone $binary_remote_addr zone=req_zone:10m rate=10r/s;
    
        server {
            location / {
                limit_req zone=req_zone burst=20 nodelay;
                ...
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在上述配置中,每秒钟最多允许10个请求,允许突发(burst)20个请求,nodelay 参数表示不延迟处理请求。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号