原配置:
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, 默認(rèn)值為1, 所有都受限制。 如果客戶端ip與白名單列出的ip相匹配,則$whiteiplist值為0也就是不受限制。
map指令是將$whiteiplist值為1的,也就是受限制的ip,映射為客戶端ip。將$whiteiplist值為0的,也就是白名單ip,映射為空的字符串。
limit_conn_zone和limit_req_zone指令對于鍵為空值的將會被忽略,從而實(shí)現(xiàn)對于列出來的ip不做限制。
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END