nginx rate limiter

By | September 30, 2020
Share the joy
  •  
  •  
  •  
  •  
  •  
  •  

 

http {
   limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/m;
   upstream myserver {
      server 127.0.0.1:8000;
   }

   server {
      listen 80;
      server_name myserver;
      location /api {
         limit_req mylimit;
         proxy_pass "http://myserver";
      }
   }
}

$binary_remote_addr, meaning the rate limiter is based on per IP. Each IP has 2 request per minute;
zone=mylimit:10m, define rate limiter name mylimit, use 10M to store it. According to Nginx doc, 1M stores 16K IPs.
rate = 2r/m, 2 request per minute for each IP

link1, link2

Category: web