Mastering Nginx

(Ron) #1

The NGINX HTTP Server


[ 132 ]

Combining these different rate limitations enables us to create a configuration that


is very flexible as to how and where clients are limited:


http {

limit_conn_zone $binary_remote_addr zone=ips:10m;

limit_conn_zone $server_name zone=servers:10m;

limit_req_zone $binary_remote_addr zone=requests:10m rate=1r/s;

limit_conn_log_level notice;

limit_req_log_level warn;

reset_timedout_connection on;

server {

# these limits apply to the whole virtual server
limit_conn ips 10;
# only 1000 simultaneous connections to the same server_name
limit_conn servers 1000;

location /search {

# here we want only the /search URL to be rate-limited
limit_req zone=requests burst=3 nodelay;

}

location /downloads {

# using limit_conn to ensure that each client is
# bandwidth-limited
# with no getting around it
limit_conn connections 1;

limit_rate_after 1m;

limit_rate 500k;

}

}

}
Free download pdf