Nginx 限流

1、限制访问频率

http {

    # 定义了一个大小 10M 的 mylimit 缓冲区(容器),请求频率为每秒 1 个请求(nr/s)
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;

}

server {

    listen  80;
    location / {

        # nodelay 不延迟处理
        # burst 是配置超额处理,可简单理解为队列机制
        # 上面配置同一个 IP 每秒只能发送一次请求(1r/s),这里配置了缓存3个请求,就意味着同一秒内只能允许 4 个任务响应成功,其它任务请求则失败(503错误)
        limit_req zone=mylimit burst=3 nodelay;
        proxy_pass http://localhost:8080;
    }

}

2、限制并发连接数

http {

    # 定义了一个 myip 缓冲区(容器)
    limit_conn_zone $binary_remote_addr zone=myip:10m;
    limit_conn_zone $server_name zone=myServerName:10m;

}

server {
    location / {

        # 每个 IP 只允许 10 个连接
        limit_conn myip 10;

        # 设置了整个虚拟服务器同时最大并发数最多只能100个链接
        limit_conn myServerName 100;
        proxy_pass http://localhost:8080;

    }
}

 

你可能感兴趣的:(Nginx)