zoukankan      html  css  js  c++  java
  • 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。

    参考链接

  • 相关阅读:
    [基础]编程环境配置
    MonoDevelop line endings
    Unity手机平台播放影片
    [3D跑酷] GUIManager UI管理
    [3D跑酷] UI事件处理系统
    [3D跑酷] AudioManager
    NGUI学习笔记汇总
    Unity3D开发之搭建Mac OS开发环境
    Unity键值(KeyCode)
    Unity3D多人协作开发环境搭建
  • 原文地址:https://www.cnblogs.com/liushijie/p/5376372.html
Copyright © 2011-2022 走看看