nginx限流配置

nginx限流配置

  • 概述
  • 两种限流方式
    • 配置

概述

限流用于保护系统,现在用户恶意请求,并发请求数过大时,对超过配置指定的部分请求进行限制访问,保证其他请求的正常响应

两种限流方式

  1. 限制请求速率
  2. 限制连接数量

配置

nginx使用漏铜算法对处理请求的速率进行限流

使用 limit_req_zonelimit_req 指令 限制请求速率
使用 limit_conn_zonelimit_conn 指令 限制连接数

# 白名单配置 start =====
geo $limit {
	# 默认限流 后面值为 1
    default 1;
    # 白名单 后面值为 0
    10.0.0.0/8 0;
    192.168.0.0/24 0;
}

map $limit $limit_key {
    0 "";
    1 $binary_remote_addr;
}

limit_req_zone $limit_key zone=test2:10m rate=10r/s;
# 白名单配置 end =====

# 限制请求速率, $binary_remote_addr表示客户端IP进行限流, 10r/s :每秒处理10个请求
limit_req_zone $binary_remote_addr zone=test:10m rate=10r/s;

# 限制连接数
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;

server {
    location / {
    	# 对应limit_req_zone ,test指定为上上面zone中的名称 burst指定突发流量 nodelay表示不延迟
        limit_req zone=test burst=20 nodelay;
        
        # 对应limit_conn_zone 
        limit_conn perip 10; # key 是 $binary_remote_addr,表示限制单个IP同时最多能持有10个连接。
        limit_conn perserver 100; # key 是 $server_name,表示虚拟主机(server) 同时能处理并发连接的总数为100。
        
    }
}

声明: 本文章用于自己工作学习记录,方便以后查阅
参考博客: 点这里

你可能感兴趣的:(nginx,网络,服务器)