现状说明:
目前应用需要限制个别IP访问平台的网站,网站使用的是Nginx,现在的具体要求如下:
1.Nginx的所有站点都不允许x.x.x.x地址访问;
2.针对某一个站点www.xxx.com限制xx.xx.xx.xx地址访问;
3.针对某一个站点www.xxx.com的某个路径限制x.xx.xx.xx地址访问
分析说明
1.针对所有站点都不允许访问的话,需要做全局设置,配置在主配置文件中;
2.针对某一个站点的话,只需要在对应站点的conf文件中配置即可;
3.针对某个路径的话,只需要在对应站点的location里面配置即可
配置示例
1.所有站点统一限制
vim nginx.conf
allow x.x.x.x;允许x.x.x.x这个地址访问
deny all;限制所有IP访问
#:除了allow允许的IP外,剩下的全部禁止访问;其次一定是写在server{}外面的,针对全局生效的;
2.针对单个站点限制
vim www.xxx.conf
server{
server_name www.XXX.com;
location ~ / # 不是 ~ /\.
{
allow xx.xx.xx.xx;
deny all;
}
}
还可以:
server{
server_name www.XXX.com;
allow xx.xx.xx.xx;
deny all;
location ~ / # 不是 ~ /\.
{
}
}
#:单站点统一限制IP,需要将以上配置写在对应域名配置的server{}内
3.针对某个项目路径进行设置
vim xxx.com
location ^~ /process-bar/
{
allow x.xx.xx.xx;
deny all;
}
修改保存后重载nginx服务service nginx reload。如果生效该IP访问网站会出现403 forbidden。
-------------------------------------------------------------------------------------------------------------------------
#封IP段比如从192.0.0.1到192.0.0.254的命令是
deny 192.0.0.0/24这其实就是把192.0.0.x这整个C端屏蔽了。
还有一种方法,在nginx的conf目录下面新建配置文件为blocksip.conf:
输入要屏蔽的地址deny 24.112.16.30; 保存一下。
在nginx的配置文件nginx.conf中加入:include blocksip.conf;
重启一下nginx的服务:service nginx reload或/usr/local/nginx/sbin/nginx -s reload 就可以生效了。
blocksip.conf:的格式还有许多种,可以配置只允许的IP访问或者IP段访问:
# block all ips
deny all;
# allow all ips
allow all;
如果你想实现这样的应用,除了几个IP外,其他全部拒绝,在ip.balcklist中这样写
allow 1.1.1.1;
allow 1.1.1.2;
deny all;