文档章节

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

一介码夫_Hum
 一介码夫_Hum
发布于 2015/10/10 12:06
字数 697
阅读 3457
收藏 10

一、简介

      在通常情况下,使用 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 ;
          #myself
           127.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 = foo
      limit_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

© 著作权归作者所有

一介码夫_Hum
粉丝 25
博文 122
码字总数 30761
作品 0
海淀
其他
私信 提问
DevOps实践 - 白名单二三事

为何加白名单是一件痛苦的事? 白名单的需求,即我们的部分应用,出于数据的敏感性与安全性,需要让指定的外包公司能访问,但其他外网用户不能访问的一种需求。 需求已明确,再看下我们之前的...

bean_53
2017/04/19
0
0
nginx防盗链、访问控制、解析php、代理服务

11月28日任务 12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置 12.16 Nginx代理 1.Nginx防盗链 示例一: 配置如下,可以和上面的配置结合起来 vi /usr/local/nginx/conf...

hhpuppy
2018/11/29
0
0
nginx 配置优化指南

一、nginx后台项目限制外网访问 公司合规要求,后台地址限制外网访问,所以通过匹配进行限制,但通过nginx deny allow进行设置无法生效,故通过用户真实IP进行判断,步骤如下: 1)环境介绍:...

邱月涛
2017/12/26
0
0
Nginx白名单防御模块--belial waf

这个程序是基于 nginx lua module . 运行平台是 linux freebsd 的 nginx 。。 WIN 的 你可以用个 linux 的 nginx 做反向代理 保护后面的服务。 Belial 目前包含的模块有 : GET 、 POST 、 ...

逆雪寒
2013/09/12
3.2K
3
Nginx防盗链、访问监控、解析php相关配置,Nginx代理

Nginx防盗链 因为改配置也是用location板块,所以本节可结合日志管理一起配置。 测试 不匹配白名单不能访问: [root@localhost vhost]# curl -utest:159820 -e "http://www.baidu.com/1.png"...

豆渣锅
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
多线程同时加载缓存实现

import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorServi......

暗中观察
昨天
3
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
2
0
组装一台工作游戏两用机

一、配置清单如下: 分类 项目 价格(元) 主板 华硕(ASUS)TUF Z370-PLUS GAMING II 电竞特工 Z370二代 支持9代CPU 1049 CPU 英特尔(Intel) i7 8700K 酷睿六核 盒装CPU处理器 2640 风扇 九...

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部