阻止国家/地区的最佳解决方案



我有一个网络应用程序,我想在上面屏蔽中国、罗马尼亚等国家。我还想屏蔽大量VPN,如热点屏蔽、隐藏系统、网络幽灵等。我有一大堆大约5500个CIDR格式的IP地址,总计约3.4亿个IP地址。我意识到这是一个巨大的数字,可能效率不高。我的网站每月有大约2000万的页面浏览量。

不管怎样,我现在在做什么:我有nginx,只是在服务器指令中包含一个大约80kb的大文本文件。它实际上在起作用,并没有真正注意到性能上的成功。我仍然想知道是否有更有效的方法来做到这一点。

我不想要的是:只接受某些国家的访问。数以百计的国家访问我的网站,所以这是不可行的。

谢谢!

从您的问题中还不清楚您使用的是什么Nginx配置指令。无论如何,AFAIK在Nginx中做这些事情最有效的方法是geo模块——你必须将一个带有IP块/范围的大文本文件include geo,但在内部,Nginx通过这个表进行非常快速的查找。

如果列表已经优化(在适用的情况下进行排序和范围合并),并且您正在使用nginx最有效的方法(例如另一个答案中的地理模块),那么您唯一能做的就是创建防火墙条目(iptable ect…),它将计算是否应该在更低的级别建立连接,通常在使用链上的资源之前内核和停止事物。换句话说,nginx甚至不需要处理连接,也不需要使用其资源来检查它是否来自正确的国家。

如果我是你,我会使用Peer block-100列表来提供帮助。不断更新。此外,如果一个站点被阻止,不管你需要临时访问,也允许这样做。

最新更新