原始配置:
http { ......
limit_conn_zone $binary_remote_addr zone=one:10m; limit_req_zone $binary_remote_addr zone=fifa:10m rate=5r/s;
...... server { ...... limit_conn one 5; limit_req zone=fifa burst=100; ...... }}
白名單配置:
http { ......
geo $whiteiplist { default 1; 127.0.0.1 0; 10.10.0.0/24 0; } map $whiteiplist $limit { 1 $binary_remote_addr; 0 ""; } limit_conn_zone $limit zone=one:10m; limit_req_zone $limit zone=fifa:10m rate=5r/s;
...... server { ...... limit_conn one 5; limit_req zone=fifa burst=100; ...... }}
說明:
# geo指令定義一個白名單$whiteiplist, 預設值為1, 全部都受限。如果客戶端ip與白名單列出的ip相匹配,則$whiteiplist值為0也就是不受限制。
map指令是將$whiteiplist值為1的,也就是受限的ip,映射為客戶端ip。將$whiteiplist值為0的,也就是白名單ip,映射為空的字串。
limit_conn_zone和limit_req_zone指令對於鍵為空值的將會被忽略,從而實現對於列出來的ip不做限制。
以上是Nginx怎麼透過geo模組設定白名單的詳細內容。更多資訊請關注PHP中文網其他相關文章!