接口幂等性&&限流

接口幂等性

接口限流

##nginx.conf
# binary_remote_addr
# binary_目的时缩写内存占用,remote_addr表示通过IP地址来限流
# zone=iplimit:20m
# iplimit是一块内存区域(记录访问频率信息),20m是指这块内存区域的大小
# rate=1r/s,标识访问的限流频率
limit_req_zone $binary_remote_addr zone=iplimit:20m rate=1r/s;

server {
    server_name www.test.com;
    location /access-limit/ {
        proxy_pass http:127.0.0.1:80/;
        # 基于IP地址的限制
        # zone=iplimit => 引用limit_req_zone中的zone变量
        # burst=2,设置一个大小为2的缓冲区域,当大量请求到来,
        # 请求数量超过限流频率时,将其放入缓冲区域
        # nodelay,缓冲区满了之后,直接返回503异常
        limit_req zone=iplimit burst=2 nodelay;
    }
}
##nginx.conf
# 根据服务器级别做限流
limit_req_zone $server_name zone=serverlimit:10m rate=1r/s;

# 基于连接数的配置
limit_conn_zone $binary_remote_addr zone=preip:20m;
limit_conn_zone $server_name zone=perserver:20m;

server {
    server_name www.test.com;
    location /access-limit/ {
        proxy_pass http:127.0.0.1:80/;
        # 基于服务器级别的限制
        # 通常情况下,server级别的限流速率时最大的
        limit_req zone=serverlimit burst=1 nodelay;

        # 每个server最多保持100个连接
        limit_conn perserver 100;
        # 每个IP地址最多保持1个连接
        limit_conn perip 1;

        # 异常情况504,默认503
        limit_req_status 504;
        limit_conn_status 504;
    }
}

发表评论

发表
Table of Contents