Chapter 6[ 131 ]http {limit_req_zone $binary_remote_addr zone=requests:10m rate=1r/s;limit_req_log_level warn;server {limit_req zone=requests burst=10 nodelay;}}Using $binary_remote_addr
We use the $binary_remote_addr variable in the preceding
example to know exactly how much space storing an IP address
will take. This variable takes 32 bytes on 32-bit platforms and
64 bytes on 64-bit platforms. So the 10m zone we configured
previously is capable of holding up to 320,000 states on 32-bit
platforms or 160,000 states on 64-bit platforms.We can also limit the bandwidth per client. This way we can ensure that a few
clients don't take up all the available bandwidth. One caveat, though: the limit_
rate directive works on a connection basis. A single client that is allowed to open
multiple connections will still be able to get around this limit:
location /downloads {limit_rate 500k;}Alternatively, we can allow a kind of bursting to freely download smaller files,
but make sure that larger ones are limited:
location /downloads {limit_rate_after 1m;limit_rate 500k;}