有时候我们会有一些特殊的限制访问的方法,那就比如说我们的网站,某些时刻,我们发现通过访问日志可以看到有几个ip,它在不停地尝试进行***,那这个时候我们就可以把非法的ip给它禁掉,不允许访问我们的网站,这是禁止ip;有时候,我们也可以限定,做一下白名单,这样比用户认证还要安全。

## 编辑配置文件

[root@wy ~]# vim /usr/local/nginx/conf/vhosts/test.conf

 location ~ .*admin\.php$ {

      allow 127.0.0.1;

       deny all;

       #auth_basic "Auth";

       #auth_basic_user_file /usr/local/nginx/conf/.htpasswd;

       include fastcgi_params;

       fastcgi_pass  unix:/tmp/www.sock;

       fastcgi_index index.php;

       fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;

     }

解释说明:

把用户认证里的这两行去掉:auth_basic "Auth";

                         auth_basic_user_file /usr/local/nginx/conf/.htpasswd;

换成了:

       allow 127.0.0.1;

       deny all;

## 检查并重新加载

[root@wy ~]# /usr/local/nginx/sbin/nginx -t

[root@wy ~]# /usr/local/nginx/sbin/nginx -s reload

## 测试

[root@wy ~]# curl -x127.0.0.1:80 www.test.com/admin.php -I

HTTP/1.1 200 OK

[root@wy ~]# curl -x192.168.219.128:80 www.test.com/admin.php -I      

HTTP/1.1 403 Forbidden

解释说明:

配置里只允许127.0.0.1访问

[root@wy ~]# curl -x192.168.219.128:80 www.test.com/forum.php -I      

HTTP/1.1 200 OK

解释说明:

只是限制了关于admin.php的

注:

如果设置白名单:

    allow ip;

    deny all;

如果设置黑名单:

   deny ip;

nginx与apache的allow、deny不太一样,apache的它需要有一个顺序(order设置),nginx不分先后顺序。

上面的配置中location的设置的黑白名单不变,假如我们设置一下全局的黑名单或白名单,看看效果。

## 设置全局黑名单

[root@wy ~]# vim /usr/local/nginx/conf/vhosts/test.conf

deny 127.0.0.1;

deny 192.168.219.128;

## 检查并重新加载

[root@wy ~]# /usr/local/nginx/sbin/nginx -t

[root@wy ~]# /usr/local/nginx/sbin/nginx -s reload

## 测试

[root@wy ~]# curl -x127.0.0.1:80 www.test.com/admin.php -I

HTTP/1.1 200 OK

解释说明:

即使设置了全局黑名单,但局部设置了白名单可以访问 admin.php 。

[root@wy ~]# curl -x127.0.0.1:80 www.test.com/forum.php -I

HTTP/1.1 403 Forbidden

[root@wy ~]# curl -x192.168.219.128:80 www.test.com/forum.php -I          

HTTP/1.1 403 Forbidden

解释说明:

对这两个做了黑名单,不允许访问

总结:

1、如果只有单独的全局匹配或则单独的location精确匹配,他们都是以来源IP 逐一从上到下匹配,其中一条命令匹配成功,其他匹配条件失效。

2、如果既有全局匹配又有location精确匹配情况,以location精确匹配情况为主、以来源IP 逐一从上到下匹配,其中一条命令匹配成功,其他匹配条件失效。