流量层限流:
Nginx之 IP 限流(限制同一ip单位时间访问数)
# $binary_remote_addr 关键字 表示通过remote_addr这个标识来做限制,“binary_”的目的是缩写内存占用量,是限制同一客户端ip地址
# zone=iplimit:20m 名叫iplimit的内存区域,大小为20兆 (用来记录访问频率信息)
# rate=1r/s 每秒放行一个请求 rate=100r/m 每分钟放行100个
limit_req_zone $binary_remote_addr zone=iplimit:20m rate=1r/s;
# 服务级别限制
limit_req_zone $server_name zone=serverlimit:10m rate=10r/s;
server {
server_name www.test.com;
location /app {
proxy_pass http://127.0.0.1:8080;
# 基于IP地址限制
# zone=iplimit 引用 limit_req_zone
# burst=2 设置大小为2的缓冲区 假设当前突然涌入三个请求 丢弃一个
# nodelay 缓冲区满了直接返回503异常 如果没有设置,则所有请求会依次等待排队
limit_req zone=iplimit burst=2 nodelay;
limit_req zone=serverlimit burst=1 nodelay;
}
}