2019独角兽企业重金招聘Python工程师标准>>>

一、简介

在通常情况下,使用 nginx 基于 ip 限制访问请求频率等限制内容,我们会需要对特定ip进行限制排除操作,因此本文引入了基于nginx geo 与 nginx map 进行此类情景相关配置;

在没有人为操作删除的情况下(without-http_geo_module),nginx默认模块中已经加载了ngx-http-geo-module相关内容;

ngx-http-geo-module可以用来创建变量,变量值依赖于客户端 ip 地址;

ngx-http-map-module可以基于其他变量及变量值进行变量创建,其允许分类,或者映射多个变量到不同值并存储在一个变量中;

ngx-http-map-module相关内容同样在默认nginx中已存在,除非由人为移除( --without-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 ;#myself127.0.0.1/32 0;#remote ip 64.223.160.0/19 0;}#使用map指令映射将白名单列表中客户端请求ip为空串map $whiteiplist $limit{1 $binary_remote_addr ;0 "";}#配置请求限制内容limit_req_zone $limit zone=foo:1m rate=10r/m;
}server{location /yourApplicationName {proxy_pass http://192.168.1.111:8095/app;# 在 server 中进行限制配置引用 zone = foolimit_req zone=foo 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中进行引用。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{#... 与普通限制相同}# 对应用中指定请求路径不设置限制,如对请求路径为  即api目录下的请求不做# 限制,则可写为 server{location /app {proxy_pass http://192.168.1.111:8095/app;limit_req zone=foo burst=5 nodelay; }location /app/api {proxy_pass http://192.168.1.111:8095/app/api}}# 因nginx会优先进行精准匹配,所以以上写法即接触了对api目录下属路径的限制

四、参考资料

参考官方文档:

ngx-http-geo-module

ngx-http-map-module

转载于:https://my.oschina.net/xiehongfei/blog/515166

【Nginx探究系列二】Nginx配置篇之客户Nginx白名单访问配置相关推荐

  1. Nginx学习系列二Linux下Nginx实现负载均衡

    关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1.启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限 ...

  2. AutoSAR系列讲解(深入篇)14.10-Mcal Gtm的Tom配置(下)

    AutoSAR系列讲解(深入篇)14.10-Mcal Gtm的Tom配置(下) Mcal Gtm的Tom配置(下) 四.Fgtm的配置 五.Fcmu的配置 1.固定分频 2.灵活分频 3.Cmu输出频 ...

  3. Web基础配置篇(十一): Zookeeper的安装配置及使用

    Web基础配置篇(十一): Zookeeper的安装配置及使用 一.概述 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop ...

  4. redis cli 删除key 模糊_Web基础配置篇(六): Redis的安装配置及基本操作

    Web基础配置篇(六): Redis的安装配置及基本操作 一.概述 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的A ...

  5. Web基础配置篇(十七): Kubernetes dashboard安装配置

    Web基础配置篇(十七): Kubernetes dashboard安装配置 一.概述 Kubernetes 简称为K8S,是用于自动部署,扩展和管理容器化应用程序的开源系统.Kubernetes的目 ...

  6. Spring Security 配置白名单访问后,仍然报错403

    按照框架上配置, .antMatchers("/test/abc").anonymous() 增加 自己路径白名单的配置,结果访问仍然出现403 forbidden 原因在于 没有 ...

  7. Tomcat IP白名单/黑名单配置

      理想情况下,用户应该使用网络防火墙来限制基于 IP 的访问.然而,利用Tomcat 应用服务器也可以实现的. 步骤 进行备份并打开 server.xml 搜索<Valve className ...

  8. 《CDN 之我见》系列二:原理篇(缓存、安全)

    2019独角兽企业重金招聘Python工程师标准>>> <CDN之我见>共由三个篇章组成,分为原理篇.详解篇和陨坑篇.本篇章适合那些从未接触过.或仅了解一些 CDN 专业 ...

  9. vue 前端显示图片加token_手摸手,带你用vue撸后台 系列二(登录权限篇)

    完整项目地址:vue-element-admin https://github.com/PanJiaChen/vue-element-admin 前言 拖更有点严重,过了半个月才写了第二篇教程.无奈自 ...

最新文章

  1. 完美的隐藏软键盘方法
  2. dev-sidecar安装桌面版
  3. 如何删除开发用户的开发Key
  4. .NET Core + K8S + Apollo 玩转配置中心
  5. 2d 蓝图_“蓝图”卷积--对深度可分离卷积的再思考
  6. php类似while函数,php 实现类似于pyhon中的Construct库的功能(四)实现do-while功能...
  7. #把函数当作参数传给另一个函数
  8. Leetcode每日一题:189.rotate-array(旋转数组)
  9. 使用jQuery获取表格内容、:nth-child() 选择器用法
  10. SMSSDK接入(Mob短信SDK接入)
  11. 固态硬盘系统经常假死_固态硬盘经常卡死什么情况
  12. POJ 2112 Optimal Milking 最优挤奶方案 Floyd算法+二分查找+最大流
  13. word2016从某一页开始插入新的起始页码
  14. 华为手机如何设置主页面_华为手机怎么进行桌面管理?正确管理华为手机桌面图标及屏幕的方法...
  15. Photoshop 2018 学习笔记 目录
  16. MySQL— 索引,视图,触发器,函数,存储过程,执行计划,慢日志,分页性能...
  17. 关于React 行内样式backgroundImage的设置
  18. 投影机RS-232串口接口大全
  19. 点亮led灯的个数_LED灯的点亮电流一般是多少
  20. Java八股文基础知识

热门文章

  1. 人生真是圆的,从BASIC开始的程序人生,又回到了BASIC,难道。。。。。
  2. 前端脚本API发布 | Java 开源企业信息化建设平台O2OA平台
  3. 知识点026-rsync命令的使用
  4. 光纤非线性效应对光OFDM信号的影响研究
  5. MTK C2K mdoem log分析
  6. PHP基础知识之————PDO预处理语句
  7. 浅谈C++物理设计:实用宏
  8. Trie树---前缀最相似匹配
  9. 自己选择的路,不后悔
  10. 为什么稀疏自编码器的正则项选用了相对熵(KL散度)的函数?