เป็นการดีกว่าที่จะหลีกเลี่ยงการใช้คำสั่ง "ถ้า" เมื่อคีย์ใน limit_req_zone (และ limit_conn_zone) ว่างเปล่าจะไม่มีการใช้ขีด จำกัด คุณสามารถใช้สิ่งนี้ร่วมกับแผนที่และโมดูลทางภูมิศาสตร์เพื่อสร้างรายการที่อนุญาตของ IP ที่ไม่มีการ จำกัด การใช้เค้น
ตัวอย่างนี้แสดงวิธีกำหนดค่าขีด จำกัด สำหรับการร้องขอพร้อมกันและอัตราการร้องขอจาก 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;
คำสั่งของโซนจะต้องอยู่ที่ระดับ http อย่างไรก็ตามสามารถวางคำสั่งอื่น ๆ ลงไปได้เช่นที่เซิร์ฟเวอร์หรือระดับตำแหน่งเพื่อ จำกัด ขอบเขตหรือปรับแต่งข้อ จำกัด เพิ่มเติม
สำหรับข้อมูลละเอียดเพิ่มเติมโปรดอ้างถึงเอกสาร Nginx ngx_http_limit_req_moduleและngx_http_limit_conn_module