阻止国家的最佳方式

时间:2015-06-23 03:49:49

标签: php apache .htaccess

我被要求阻止访问网站。 有两种方法我知道我可以选择 - 1.在apache级别(这样的工具:http://www.ip2location.com/blockvisitorsbycountry.aspx)生成一个包含IP范围列表的长htaccess文件。 我所知道的另一种方式是使用PHP(无论是本地数据库,远程Web服务还是像htaccess一样的列表)。 我的问题是什么更有效 - 我认为,如果我使用apache,它比PHP快,但每个页面都可以访问。 如果我使用PHP,我可以做一次并保存在会话中。 什么是更有效的方式? 谢谢!

1 个答案:

答案 0 :(得分:3)

您无需在.htaccess文件中填写数千行IP。相反,您可以安装C库和Apache模块来为您完成繁重的工作。

MaxMind提供了一个流行的免费数据库,通常用于IP查找。他们的GeoLite2是一个免费的数据库,每月更新一次。如果您需要,他们的付费产品会更准确,更新。

通过使用此数据库并安装其中一个APIs,您可以根据需要处理流量。

出于我们的目的,您需要安装C库API以及Apache模块。在这些工作和启用之后,将数据库文件放在某个位置,然后您可以使用.htaccessApache config file中的代码设置国家/地区块,或MaxMindDBEnable On MaxMindDBFile DB /path/to/GeoIP/GeoLite2-Country.mmdb MaxMindDBEnv MM_COUNTRY_CODE DB/country/iso_code SetEnvIf MM_COUNTRY_CODE ^(RU|DE|FR) BlockCountry Deny from env=BlockCountry

Robolectric

这将阻止俄罗斯,德国和法国。在此处获取您的双字母ISO国家/地区代码。

这比你的服务器在.htaccess文件中的每个请求上解析数千行文本要好得多!

您确实需要对服务器进行高级访问才能安装库和模块,因此这对共享主机或VPS上没有此类访问权限的情况不利。

如果出于某种原因,您希望在文件夹级别使用特定的阻止规则,那么这也会有效。

Nice Article / Reference