nginx 限流,并且返回json格式数据

 限流一般有三种: 计数器 、漏桶算法、令牌桶算

 

限流配置

http {
    
    limit_req_zone $binary_remote_addr zone=myRateLimit:10m rate=1r/s;
   ...

 

server {
   ...

    limit_req zone=one burst=1 nodelay;

    ...

 

第1个参数:limit_req_zone定义在http块中,$binary_remote_addr表示保存客户端IP地址的二进制形式。
第2个参数:Zone定义IP状态及URL访问频率的共享内存区域。zone=keyword标识区域的名字,以及冒号后面跟区域大小。16000个IP地址的状态信息约1MB,所以示例中区域可以存储160000个IP地址。
第3个参数:Rate定义最大请求速率。示例中速率不能超过每秒1个请求。 

 

超过限流,默认返回503状态

然后我们在503错误页面配置返回相应json或者html页面即可。这里我们返回json

    error_page 503 /503;
    location = /503 {
        default_type application/json;
        add_header Content-Type 'text/html; charset=utf-8';
        return 200 '{"code":"200,"msg":"太多请求了..."}';
    }

 

posted @ 2024-08-18 21:58  程序员小艺  阅读(55)  评论(0编辑  收藏  举报