• Nginx 限速模块一览


    为了保护服务器不被刷流量,或者业务方面的一些限制,需要做一些限速措施。

    一、http 请求并发连接数模块:ngx_http_limit_conn_module

    这个模块可以设置每个定义的变量(比如客户端ip)的并发连接数,比如:某个客户端ip在同一时间内的连接数不能超过某个值。

    语法:

    1. 定义限制链接区域:
    Syntax:	limit_conn_zone key zone=name:size;
    Default:	—
    Context:	http
    
    1. 设置连接数限制:
    Syntax:	limit_conn zone number;
    Default:	—
    Context:	http, server, location
    

    示例:

    # 根据客户端ip进行限制,区域名称为perip,总容量为10m
    limit_conn_zone $binary_remote_addr zone=perip:10m;
    limit_conn_zone $server_name zone=perserver:10m;
    server {
        ...
        # 使用perip区域名称(zone name),同一时间并发数不得超过10
        limit_conn perip 10;
        limit_conn perserver 100;
    }
    

    二、tcp 请求并发连接数模块:ngx_stream_limit_conn_module(since 1.9.3)

    这是自 nginx 1.9.3 提供的 TCP负载均衡的限制流连接数模块,用法等同于ngx_http_limit_conn_module

    三、http 请求限制模块:ngx_http_limit_req_module

    这个模块用来限制每个被定义的变量(比如客户端ip)的访问速率,比如:通俗点来讲,每个ip可以每秒请求几次。

    语法:

    1. 定义限速区:
    Syntax:	limit_req_zone key zone=name:size rate=rate;
    Default:	—
    Context:	http
    
    1. 设置限速:
    Syntax:	limit_req zone=name [burst=number] [nodelay];
    Default:	—
    Context:	http, server, location
    

    示例:

    
    #limit_req_zone 为定义一个限速区域,binary_remote_addr代表一个客户端ip,zone perip为区域名称,10m为总容量,rate=1r/s代表每秒只接受1个请求
    limit_req_zone $binary_remote_addr zone=perip:10m rate=1r/s;
    limit_req_zone $server_name zone=perserver:10m rate=10r/s;
    server {
        ...
        # 代表使用zone为preip的配置,设置的速率1个每秒,缓冲区5个请求,如果超过速率和缓存区大小,直接返回503异常码
        limit_req zone=perip burst=5 nodelay;
        # 使用persever的配置,10个请求每秒,缓冲区为10个请求,没有nodelay参数,则会将请求延迟处理
        limit_req zone=perserver burst=10;
    }
    

    四、nginx http 核心模块:ngx_http_core_module

    使用到了其中的limit_rate命令,可以限制响应速率比如:

    limit_rate 1024K;
    

    代表单词请求响应量最多为1024K。

    参考链接

  • 相关阅读:
    Module build failed: TypeError: this.getResolve is not a function 安装node-sass运行报错
    RMAN Catalog 和 Nocatalog 的区别
    oracle 闪回区故障
    mysql windows 安装 错误
    git rejected
    oracle 计算机改名后监听无法启动
    mysql GTID
    java程序员技术范围
    activiti
    spring mybatis mysql 事务不起作用
  • 原文地址:https://www.cnblogs.com/liushijie/p/5376372.html
Copyright © 2020-2023  润新知