nginx设置目录白名单、ip白名单的实现方法
1.设置目录白名单:对指定请求路径不设置限制,如对请求路径为api目录下的请求不做限制,则可写为
server{ location/app{ proxy_passhttp://192.168.1.111:8095/app; limit_connconn20; limit_rate500k; limit_reqzone=fooburst=5nodelay; } location/app/api{ proxy_passhttp://192.168.1.111:8095/app/api } } #因nginx会优先进行精准匹配,所以以上写法即接触了对api目录下属路径的限制
2.设置ip白名单,需用到nginxgeo与nginxmap
在没有人为删除的情况下(--without-http_geo_module或--without-http_map_module),nginx默认加载了ngx-http-geo-module和ngx-http-map-module相关内容;
ngx-http-geo-module可以用来创建变量,变量值依赖于客户端ip地址;
ngx-http-map-module可以基于其他变量及变量值进行变量创建,其允许分类,或者映射多个变量到不同值并存储在一个变量中;
Nginxgeo格式说明 Syntax(语法格式):geo[$address]$variable{...} Default(默认):- Content(配置段位):http Nginxmap格式说明 Syntax(语法格式):mapString$variable{...} Default(默认):- Content(配置段位):http 白名单配置示例 http{ #...其他配置内容 #定义白名单ip列表变量 geo$whiteiplist{ default1; 127.0.0.1/320; 64.223.160.0/190; } #使用map指令映射将白名单列表中客户端请求ip为空串 map$whiteiplist$limit{ 1$binary_remote_addr; 0""; } #配置请求限制内容 limit_conn_zone$limitzone=conn:10m; limit_req_zone$limitzone=allips:10mrate=20r/s; server{ location/yourApplicationName{ proxy_passhttp://192.168.1.111:8095/app; limit_connconn50; limit_rate500k; limit_reqzone=allipsburst=5nodelay; } } } 白名单配置可用于对合作客户,搜索引擎等请求过滤限制 #(特殊情况处理) #如果想仅限制指定的请求,如:只限制Post请求,则: http{ #其他请求.. #请求地址map映射 map$request_method$limit{ default""; POST$binary_remote_addr; } #限制定义 limit_req_zone$limitzone=reqlimit:20mrate=10r/s; server{ ...#与普通限制一致 } } #在此基础上,想进行指定方法的白名单限制处理,则: http{ #... #定义白名单列表 map$whiteiplist$limitips{ 1$binary_remote_addr; 0""; } #基于白名单列表,定义指定方法请求限制 map$request_method$limit{ default""; #POST$binary_remote_addr; POST$limitips; } #对请求进行引用 limit_req_zone$limitzone=reqlimit:20mrate=10r/s; #在server中进行引用 server{ #...与普通限制相同 } }
以上这篇nginx设置目录白名单、ip白名单的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。