限制访问的方法:
有时候我们通过访问日志,能看到有几个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;就可以了。
配置内容如图: