美文网首页网络安全
宝塔面板屏蔽国外的IP访问:利用Cloudflare在nginx

宝塔面板屏蔽国外的IP访问:利用Cloudflare在nginx

作者: 码上自动化 | 来源:发表于2019-05-01 10:47 被阅读0次

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

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

    第一:更改nginx配置文件

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

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

    如果不清楚可以看图:

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

    第二:修改网站配置文件

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

    if ($allow = no) {

    return 403;

    }

    宝塔面板屏蔽国外的IP访问:利用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那么这个方法是不灵光的。请注意!!!!

    以上整理来自:www.ruanally.com

    相关文章

      网友评论

        本文标题:宝塔面板屏蔽国外的IP访问:利用Cloudflare在nginx

        本文链接:https://www.haomeiwen.com/subject/fsminqtx.html