在nginx 配置目录中创建geo.conf配置文件,内容如下

geo  $bad  {

default          0;

include /opt/nginx/conf/vconf/ip_list.conf;

}


创建ip_list.conf  , 这个文件中是你要禁止访问的IP地址,内容如下:

100.7.289.41 1;

100.8.210.0/24 1;


然后在nginx 主配置文件 nginx.conf 中引入geo.conf配置

include vconf/geo.conf;


在一个拦截策略配置 hook.conf  添加内容

if ($bad) {

    return 404;

}


好了,现在在你需要启用IP黑名单拦截的,域名中引入 hook.conf 配置,如:

nginx geo黑名单_配置文件




nginx -t  检查通过后 nginx reload

这样 ​​s.test.com​​ 域名就开启了对黑名单中IP的拦截


#---

IP黑名单(ip_list.conf) : 在里面添加禁止的IP,IP段 ,设置值为 1

geo配置 (geo.conf):引入IP黑名单(ip_list.conf) ,geo 中 default 为 0  (默认值为0 , ip黑名单中IP的值是 1)

拦截规则 (hook.conf):if ($bad) ,  if 语句,if 后直接跟变量名;如果变量值为空或者是以“0”开始的字符串,则条件为假;

因为黑名单中IP 的值是1 ,这里条件为真,返回return 404 ,这样就做到了nginx 黑名单功能

在nginx的使用中建议,把通用的配置都单独抽里出来写成一个配置,需要的是的include引入。


nginx if语句语法

​http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_rewrite_module.html#if​