宝塔面板利用Cloudflare在nginx中屏蔽所有来自国外的IP地址访问

宝塔面板评论字数 903阅读模式

经过Cloudflare的网页,可以通过 HTTP_CF_IPCOUNTRY 参数获取客户国家。所以利用这个参数我们可以阻止某些国家/地区的访问,并且Cloudflare还提供了自定义向访问者显示的错误页面。额,不过这个要升级到专业版才可以使用。

大鸟最近因为用上了Cloudflare Partner,感觉CloudFlare在CDN这条道路上已经远远地甩开国内某些CDN一条街了。算了不吐槽了!今天,大鸟要说的就是在nginx中屏蔽了所有来自国外的IP地址访问,并返回403错误!

第一:更改nginx配置文件

需要配置nginx的配置文件,在http段中添加命令:

map $http_cf_ipcountry $allow { 
default no; 
CN yes; 
}

如果不清楚可以看图:

宝塔面板利用Cloudflare在nginx中屏蔽所有来自国外的IP地址访问

第二:修改网站配置文件

修改站点配置文件,然后在server段中添加

if ($allow = no) { 
return 403; 
}

如果不知道放哪里,如图:

宝塔面板利用Cloudflare在nginx中屏蔽所有来自国外的IP地址访问

这样,所有来自国外的IP访问网站页面的时候全都返回403了。这样设置,我们就可以看到效果了。大鸟用了一个国外ip来打开网站是打不开的。国内的是可以打开的。

第三:总结

这是利用Cloudflare的一些动能来很容易的做到阻止某个地区或者国家的ip访问,因为大鸟用的宝塔面板所以标题就是宝塔面板来说了,其他的的面板或者命令环境也是一样的方法。这里就不细说了。

这篇文章是经过Cloudflare的网页,才可以通过 HTTP_CF_IPCOUNTRY 参数获取客户国家。例子如下:

<?php
$country_code = $_SERVER["HTTP_CF_IPCOUNTRY"];
echo $country_code; //如果是美国则输出US
?>

那么如果CLOUDFLARE未获取怎么办,可以提供一个默认值

<?php
$country_code = isset($_SERVER["HTTP_CF_IPCOUNTRY"])?$_SERVER["HTTP_CF_IPCOUNTRY"]:'默认值';
echo $country_code;
?>

如果你没有套上Cloudflare cdn那么这个方法是不灵光的。请注意!!!!

weinxin
微信公众号
关注大鸟博客公众号
大鸟
宝塔面板docker安装umami 宝塔面板

宝塔面板docker安装umami

umami是个小巧好用的第三方统计站点程序,之前也介绍过umami的其他安装方法,这篇文章我们还是用宝塔面板来安装,不过这次的安装是用docker来安装该程序。宝塔服务器面板,一键全能部署及管理,送你...
aapanel安装Flarum正式版 宝塔面板

aapanel安装Flarum正式版

目前Flarum正式版的最新版本是1.2,这篇文章就利用宝塔面板的英文版本aapanel来安装这个论坛程序。至于如何利用宝塔面板来安装前面已经详细介绍过。可以看教程,宝塔面板安装Flarum – 一款...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定