限制访问的方法:

有时候我们通过访问日志,能看到有几个IP会不停的尝试***网站,需要去禁掉这几个IP;或者去限定某些IP可以访问,其他IP均不许访问。比如:管理中心,只要管理员访问,其他IP一律禁止访问。

访问控制比"用户认证"要更安全。

配置方法:

编辑虚拟主机配置文件

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

修改下面配置(蓝色为删除,红色为新增): 

location ~ .*admin\.php$ {

        #auth_basic "LampLinux auth";

        #auth_basic_user_file /usr/local/nginx/conf/.htpasswd; (删除auth相关配置)

        allow 127.0.0.1;        

        deny all;                # 只允许127.0.0.1访问,其他全部拒绝。

        include fastcgi_params;

        fastcgi_pass unix:/tmp/www.sock;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME  /data/www$fastcgi_script_name;

    }

检查并重加载

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

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

测验:

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

HTTP/1.1 200 OK

Server: nginx/1.6.2

Date: Wed, 12 Aug 2015 11:04:19 GMT

...

127.0.0.1访问管理中心可以通行。


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

HTTP/1.1 403 Forbidden

Server: nginx/1.6.2

Date: Wed, 12 Aug 2015 11:05:09 GMT

Content-Type: text/html

Content-Length: 168

Connection: keep-alive

192.168.137.11访问管理中心无法读取。


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

HTTP/1.1 200 OK

Server: nginx/1.6.2

Date: Wed, 12 Aug 2015 11:06:33 GMT

...

192.168.137.11访问其他页面不受限制。

仅仅是对admin.php做了403限制。

补充:

    我们也可以针对目录做访问限制:

    location ~ /abc/ 

    {

        allow .....;

        deny .....;

     }

还可以针对全局,比如说整个网站不允许127.0.0.1访问,其他的都允许,

我们需要在整个网站配置里面(即location上面一段结尾)加上deny 127.0.0.1;就可以了。

如果想要把192.168.137.*的这个网段都拒绝掉,接着写入deny 192.168.137.0/24;就可以了。

配置内容如图:

wKioL1XKvcuAULBIAAKY2ujsfC8067.jpg