Nó thực sự tốt hơn để tránh sử dụng chỉ thị "nếu". Khi khóa trong giới hạn numq_zone (và giới hạn_conn_zone) trống, các giới hạn không được áp dụng. Bạn có thể sử dụng kết hợp với các mô-đun bản đồ và địa lý để tạo danh sách trắng các IP nơi giới hạn bướm ga không được áp dụng.
Ví dụ này cho thấy cách định cấu hình giới hạn cho cả yêu cầu đồng thời và tốc độ yêu cầu từ một IP.
http {
geo $whitelist {
default 0;
# CIDR in the list below are not limited
1.2.3.0/24 1;
9.10.11.12/32 1;
127.0.0.1/32 1;
}
map $whitelist $limit {
0 $binary_remote_addr;
1 "";
}
# The directives below limit concurrent connections from a
# non-whitelisted IP address to five
limit_conn_zone $limit zone=connlimit:10m;
limit_conn connlimit 5;
limit_conn_log_level warn; # logging level when threshold exceeded
limit_conn_status 503; # the error code to return
# The code below limits the number requests from a non-whitelisted IP
# to one every two seconds with up to 3 requests per IP delayed
# until the average time between responses reaches the threshold.
# Further requests over and above this limit will result
# in an immediate 503 error.
limit_req_zone $limit zone=one:10m rate=30r/m;
limit_req zone=one burst=3;
limit_req_log_level warn;
limit_req_status 503;
Các chỉ thị vùng phải được đặt ở cấp http, tuy nhiên các chỉ thị khác có thể được đặt xuống phía dưới, ví dụ như ở máy chủ hoặc cấp vị trí để giới hạn phạm vi của chúng hoặc điều chỉnh thêm các giới hạn.
Để biết thêm thông tin, hãy tham khảo tài liệu Nginx ngx_http_limit_Vq_module và ngx_http_limit_conn_module