我有一个网络应用程序,我想阻止像中国,罗马尼亚等国家。我也想阻止大量的VPN,如热点盾,hidemyass,cyberghost等。我有一个大约5500个CIDR格式IP地址的大型列表,总共大约3.4亿个IP地址。我意识到这是一个巨大的数字,可能效率不高。我的网站每月获得大约2000万次页面浏览量。
无论如何,我现在在做什么: 我有nginx,我只是在服务器指令中包含一个大约80kb的大文本文件。它实际上工作,并没有真正注意到性能损失。我仍然想知道是否有更有效的方法来做到这一点。
我不想要的内容:仅接受某些国家/地区的访问。数百个国家访问我的网站,因此这是不可行的。
谢谢!
答案 0 :(得分:4)
从您的问题中不清楚您使用的Nginx配置指令。无论如何,AFAIK在Nginx中执行此类操作的最有效方法是geo
module - 您必须include
一个大的文本文件,其IP块/范围为geo
,但内部为Nginx通过此表进行非常快速的查找。
答案 1 :(得分:1)
如果已经优化了列表(在适用的情况下进行了排序和范围合并)并且您正在使用最有效的nginx方法(例如另一个答案中的geo模块),那么您唯一可以做的就是加快速度更多的是创建防火墙条目(iptable ect ...),它将计算是否应该在更低级别建立连接,通常是内核并在它们使用链上的资源之前停止。换句话说,nginx甚至不必处理连接并使用其资源来检查它是否来自适当的国家。
答案 2 :(得分:0)
如果我是你,我会使用Peer block-100的列表来提供帮助。不断更新。此外,如果某个站点被阻止,但您需要临时访问权限,那么也允许这样做。