nginx如何设置目录白名单和ip白名单

发布时间 - 2023-05-18 00:00:00    点击率:

1.设置目录白名单:对指定请求路径不设置限制,如对请求路径为api目录下的请求不做限制,则可写为

server{
    location /app {
      proxy_pass http://192.168.1.111:8095/app;

      limit_conn conn 20;

      limit_rate 500k;

      limit_req zone=foo burst=5 nodelay; 
    }
    location /app/api {
      proxy_pass http://192.168.1.111:8095/app/api
    }
}
# 因nginx会优先进行精准匹配,所以以上写法即接触了对api目录下属路径的限制

2.设置ip白名单,需用到nginx geo 与 nginx map

在没有人为删除的情况下(--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可以基于其他变量及变量值进行变量创建,其允许分类,或者映射多个变量到不同值并存储在一个变量中;

nginx geo 格式说明
 
syntax ( 语法格式 ): geo [$address] $variable { ... }
default ( 默认 ): -
content ( 配置段位 ): http
nginx map 格式说明
syntax ( 语法格式 ): map string $variable { ... }
default ( 默认 ):-
content ( 配置段位 ): http
 
白名单配置示例
 
http{
   # ... 其他配置内容
   #定义白名单ip列表变量
   geo $whiteiplist {
     default 1 ;
     127.0.0.1/32 0;
     64.223.160.0/19 0;
   }
   #使用map指令映射将白名单列表中客户端请求ip为空串
   map $whiteiplist $limit{
     1 $binary_remote_addr ;
     0 "";
   }
   #配置请求限制内容
   limit_conn_zone $limit zone=conn:10m;
   limit_req_zone $limit zone=allips:10m rate=20r/s;
   server{
     location /yourapplicationname {
       proxy_pass http://192.168.1.111:8095/app;
       limit_conn conn 50;
       limit_rate 500k;
       limit_req zone=allips burst=5 nodelay;
     }
   }
}
白名单配置可用于对合作客户,搜索引擎等请求过滤限制
 
#(特殊情况处理)
 
#如果想仅限制指定的请求,如:只限制post请求,则:
http{
   # 其他请求..
   #请求地址map映射
   map $request_method $limit {
     default "";
     post $binary_remote_addr;
   }
   #限制定义
   limit_req_zone $limit zone=reqlimit:20m rate=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 $limit zone=reqlimit:20m rate=10r/s;
 
   #在server中进行引用
   server{
     #... 与普通限制相同
   }
}


# nginx  # 客户端  # 变量值  # 相关内容  # 多个  # 不做  # 则可  # 如对  # 在此基础上  # 为空  # 可以用来 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251811 】 【 AI营销90571


相关推荐: 广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  如何用虚拟主机快速搭建网站?详细步骤解析  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  如何在IIS中配置站点IP、端口及主机头?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Python文件异常处理策略_健壮性说明【指导】  高端建站三要素:定制模板、企业官网与响应式设计优化  Python进程池调度策略_任务分发说明【指导】  HTML 中如何正确使用模板变量为元素的 name 属性赋值  大学网站设计制作软件有哪些,如何将网站制作成自己app?  Swift开发中switch语句值绑定模式  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  实例解析angularjs的filter过滤器  jQuery validate插件功能与用法详解  如何快速搭建虚拟主机网站?新手必看指南  如何在阿里云域名上完成建站全流程?  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Laravel怎么清理缓存_Laravel optimize clear命令详解  香港网站服务器数量如何影响SEO优化效果?  java ZXing生成二维码及条码实例分享  如何用免费手机建站系统零基础打造专业网站?  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  制作公司内部网站有哪些,内网如何建网站?  Laravel如何处理异常和错误?(Handler示例)  使用spring连接及操作mongodb3.0实例  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  Laravel如何自定义错误页面(404, 500)?(代码示例)  BootStrap整体框架之基础布局组件  如何在IIS管理器中快速创建并配置网站?  如何在IIS中新建站点并解决端口绑定冲突?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  高性能网站服务器配置指南:安全稳定与高效建站核心方案  EditPlus 正则表达式 实战(3)  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  Laravel如何使用查询构建器?(Query Builder高级用法)  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Python并发异常传播_错误处理解析【教程】  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Laravel如何优化应用性能?(缓存和优化命令)  用v-html解决Vue.js渲染中html标签不被解析的问题  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析