[Nginx配置系列] 基于Nginx Geo与 Nginx Map模块进行Nginx白名单配置

一、简介

在通常情况下,使用 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;
     limit_req zone=foo burst=5;
     
}

白名单配置可用于对合作客户,搜索引擎等请求过滤限制

四、参考资料

参考官方文档:

ngx-http-geo-module

ngx-http-map-module

时间: 2024-08-08 12:13:07

[Nginx配置系列] 基于Nginx Geo与 Nginx Map模块进行Nginx白名单配置的相关文章

nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录

geo指令使用ngx_http_geo_module模块提供的.默认情况下,nginx有加载这个模块,除非人为的 --without-http_geo_module.ngx_http_geo_module模块可以用来创建变量,其值依赖于客户端IP地址.geo指令语法: geo [$address] $variable { ... }默认值: -配置段: http定义从指定的变量获取客户端的IP地址.默认情况下,nginx从$remote_addr变量取得客户端IP地址,但也可以从其他变量获得.例

iptables白名单配置

白名单配置总结 1.        操作系统 [[email protected] ~]# uname -r 2.6.32-279.el6.x86_64 [[email protected] ~]# cat /etc/redhat-release CentOS release 6.8 (Final) 2.        第一种方法,间接法 编辑防火墙规则配置文件 iptables vim /etc/sysconfig/iptables :INPUT ACCEPT [0:0] :FORWARD A

nginx限速白名单配置

在<nginx限制连接数ngx_http_limit_conn_module模块>和<nginx限制请求数ngx_http_limit_req_module模块>中会对所有的IP进行限制.在某些情况下,我们不希望对某些IP进行限制,如自己的反代服务器IP,公司IP等等.这就需要白名单,将特定的IP加入到白名单中.下面来看看nginx白名单实现方法,需要结合geo和map指令来实现.geo和map指令使用方法参见下面文章.<nginx geo使用方法>和<nginx

【树莓派】Squid代理以及白名单配置

Squid安装: sudo apt-get install squid3 -y 首先,建议备份一下这个配置文件,以免配错之后,无法恢复,又得重新安装: sudo cp /etc/squid3/squid.conf /etc/squid3/squid.conf.default.bak squid log查看: sudo tial -f /var/log/squid3/access.log 服务启动停止与查看状态: sudo service squid3 start sudo service squ

项目适配iOS9遇到的一些问题及解决办法 ,以及URL 白名单配置方法

1.网络请求报错.升级Xcode 7.0发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Security policy requires the use of a secure connection. 原因:iOS9引入了新特性App Transport Security (ATS).详情:App Transport Security (ATS)新特性要求App内访问的网络必须使用HTTPS协议

nginx使用GeoIP限制访问并支持白名单

要使用GeoIP,需要重新编译Nginx,我的系统是centos6.5,nginx用的是tengine,需要的软件包:gcc.gcc-c++. openssl. openssl-devel.geoIP library.GeoLite Country.GeoLite City.pcre.tengine2 1.下载需要的软件包 wget http://tengine.taobao.org/download/tengine-2.0.3.tar.gz wget http://geolite.maxmin

zabbix 通过status模块监控nginx

1.编辑nginx的配置文件,在server下添加如下内容: location /status {stub_status on;access_log off;allow 127.0.0.1;deny all;} 保存退出并重启nginx 2.创建监控nginx的脚本目录 mkdir /usr/local/zabbix/libexec 3.vim /usr/local/zabbix/libexec/nginx.sh && chmod +x /usr/local/zabbix/libexec/

eclipse和myeclipse的配置(基于工作空间)

eclipse和myeclipse的配置是基于工作空间的,一旦工作空间发生改变,就需要重新配置. 以eclipse为例,新建工作空间后,选择Window--->Preferences: 1.在Window--->Preferences中选择General--->Workspace,修改编码方式为UTF-8,点击Apply: 2.在Window--->Preferences中选择General---> Editors --->File Associations ---&g

PHP开发环境配置系列(四)-XAMPP常用信息

PHP开发环境配置系列(四)-XAMPP常用信息 博客分类: PHP开发环境配置系列 xamppphp 完成了前面三篇后(<PHP开发环境配置系列(一)-Apache无法启动(SSL冲突)> .<PHP开发环境配置系列(二)-XDebug设置> .<PHP开发环境配置系列(三)-项目源码映射> ),今天补充一下XAMPP的一些常用信息(<PHP开发环境配置系列(四)-XAMPP常用信息> ),有备无患.     1. XAMPP的启动路径     xampp