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 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  教你用AI将一段旋律扩展成一首完整的曲子  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  如何挑选高效建站主机与优质域名?  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  Laravel如何使用Blade模板引擎?(完整语法和示例)  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  如何快速生成橙子建站落地页链接?  Internet Explorer官网直接进入 IE浏览器在线体验版网址  如何快速生成ASP一键建站模板并优化安全性?  简历没回改:利用AI润色让你的文字更专业  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  如何在服务器上配置二级域名建站?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  如何实现建站之星域名转发设置?  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  lovemo网页版地址 lovemo官网手机登录  北京的网站制作公司有哪些,哪个视频网站最好?  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  如何注册花生壳免费域名并搭建个人网站?  PHP 500报错的快速解决方法  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  文字头像制作网站推荐软件,醒图能自动配文字吗?  如何快速生成可下载的建站源码工具?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  ,南京靠谱的征婚网站?  详解vue.js组件化开发实践  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  如何快速生成高效建站系统源代码?  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  如何在IIS中配置站点IP、端口及主机头?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  轻松掌握MySQL函数中的last_insert_id()  Laravel如何使用Eloquent进行子查询  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  如何在IIS中新建站点并解决端口绑定冲突?  详解MySQL数据库的安装与密码配置  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  北京网站制作的公司有哪些,北京白云观官方网站?  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  JavaScript如何实现类型判断_typeof和instanceof有什么区别  Android okhttputils现在进度显示实例代码  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  零服务器AI建站解决方案:快速部署与云端平台低成本实践  如何在万网开始建站?分步指南解析  Laravel如何使用查询构建器?(Query Builder高级用法)  利用vue写todolist单页应用