【Nginx探究系列二】Nginx配置篇之客户Nginx白名单访问配置
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白名单访问配置相关推荐
- Nginx学习系列二Linux下Nginx实现负载均衡
关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1.启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限 ...
- AutoSAR系列讲解(深入篇)14.10-Mcal Gtm的Tom配置(下)
AutoSAR系列讲解(深入篇)14.10-Mcal Gtm的Tom配置(下) Mcal Gtm的Tom配置(下) 四.Fgtm的配置 五.Fcmu的配置 1.固定分频 2.灵活分频 3.Cmu输出频 ...
- Web基础配置篇(十一): Zookeeper的安装配置及使用
Web基础配置篇(十一): Zookeeper的安装配置及使用 一.概述 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop ...
- redis cli 删除key 模糊_Web基础配置篇(六): Redis的安装配置及基本操作
Web基础配置篇(六): Redis的安装配置及基本操作 一.概述 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的A ...
- Web基础配置篇(十七): Kubernetes dashboard安装配置
Web基础配置篇(十七): Kubernetes dashboard安装配置 一.概述 Kubernetes 简称为K8S,是用于自动部署,扩展和管理容器化应用程序的开源系统.Kubernetes的目 ...
- Spring Security 配置白名单访问后,仍然报错403
按照框架上配置, .antMatchers("/test/abc").anonymous() 增加 自己路径白名单的配置,结果访问仍然出现403 forbidden 原因在于 没有 ...
- Tomcat IP白名单/黑名单配置
理想情况下,用户应该使用网络防火墙来限制基于 IP 的访问.然而,利用Tomcat 应用服务器也可以实现的. 步骤 进行备份并打开 server.xml 搜索<Valve className ...
- 《CDN 之我见》系列二:原理篇(缓存、安全)
2019独角兽企业重金招聘Python工程师标准>>> <CDN之我见>共由三个篇章组成,分为原理篇.详解篇和陨坑篇.本篇章适合那些从未接触过.或仅了解一些 CDN 专业 ...
- vue 前端显示图片加token_手摸手,带你用vue撸后台 系列二(登录权限篇)
完整项目地址:vue-element-admin https://github.com/PanJiaChen/vue-element-admin 前言 拖更有点严重,过了半个月才写了第二篇教程.无奈自 ...
最新文章
- 完美的隐藏软键盘方法
- dev-sidecar安装桌面版
- 如何删除开发用户的开发Key
- .NET Core + K8S + Apollo 玩转配置中心
- 2d 蓝图_“蓝图”卷积--对深度可分离卷积的再思考
- php类似while函数,php 实现类似于pyhon中的Construct库的功能(四)实现do-while功能...
- #把函数当作参数传给另一个函数
- Leetcode每日一题:189.rotate-array(旋转数组)
- 使用jQuery获取表格内容、:nth-child() 选择器用法
- SMSSDK接入(Mob短信SDK接入)
- 固态硬盘系统经常假死_固态硬盘经常卡死什么情况
- POJ 2112 Optimal Milking 最优挤奶方案 Floyd算法+二分查找+最大流
- word2016从某一页开始插入新的起始页码
- 华为手机如何设置主页面_华为手机怎么进行桌面管理?正确管理华为手机桌面图标及屏幕的方法...
- Photoshop 2018 学习笔记 目录
- MySQL— 索引,视图,触发器,函数,存储过程,执行计划,慢日志,分页性能...
- 关于React 行内样式backgroundImage的设置
- 投影机RS-232串口接口大全
- 点亮led灯的个数_LED灯的点亮电流一般是多少
- Java八股文基础知识