Nginx怎么通過geo模塊設(shè)置白名單

原配置:

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)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊8 分享