nginx限流

场景:
限制最大连接数300,单url每秒最多处理100个请求,同客户端最大请求数不超过5

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;

    keepalive_timeout  65;
    # 限制单个url每秒只能处理100个请求
    limit_req_zone $uri zone=api_read:20m rate=100r/s;
    # 限制单个服务器
    limit_conn_zone $server_name zone=perserver:10m;
    # 限制同一个客户端的请求数
    limit_conn_zone $binary_remote_addr zone=perip:10m;
    gzip  on;

    upstream web-app {
        server localhost:8882;
    }


    server {
        listen       8000;
        limit_conn perip 5;
        limit_conn perserver 300;

    access_log logs/access.log;
    error_log logs/error.log;
    location ^~ /web-app/ {
        proxy_pass $scheme://web-app;
        #bust=20表示这个配置的意思是设置一个大小为5的缓冲区当有大量请求(爆发)过来时,超过了访问频次限制的请求可以先放到这个缓冲区内
        limit_req zone=api_read burst=20 nodelay;
    }

    error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 作者:大鱼炖海棠链接:https://www.jianshu.com/p/2c6e7852e732 系统设计时一般...
    一剑仙人跪_阅读 395评论 0 0
  • 系统设计时一般会预估负载,当系统遭受恶意攻击或正常突发流量等都可能导致系统被压垮,而限流就是保护措施之一。 一、限...
    大鱼炖海棠阅读 1,777评论 2 43
  • 这篇文章主要介绍了Nginx源码研究之nginx限流模块详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。...
    03ngnntds阅读 317评论 0 0
  • 限流算法: 1. 令牌桶算法 算法思想是: 令牌以固定速率产生,并缓存到令牌桶中;令牌桶放满时,多余的令牌被丢弃;...
    touch_The_Sky阅读 898评论 0 2
  • 今天早上我去学画画,画的是鱼,海草,海星,章鱼。我们这一节课只画了一幅画。先画大的鱼,在画其他小的鱼。然后画乌龟,...
    自由_d1f9阅读 150评论 0 0