-3

我有一个网络应用程序,我想在其上屏蔽中国、罗马尼亚等国家/地区。我还想屏蔽大量 VPN,如热点盾、hidemyass、cyberghost 等。我有一个大约 5500 个 CIDR 格式 IP 地址的大列表,总共大约 3.4 亿个 IP 地址。我意识到这是一个巨大的数字,可能效率不高。我的网站每月获得大约 2000 万次页面浏览量。

无论如何,我现在在做什么:我有 nginx,并且只是在服务器指令中包含一个大约 80kb 的大文本文件。它实际上正在工作,并没有真正注意到性能下降。我仍然想知道是否有更有效的方法来做到这一点。

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

谢谢!

4

3 回答 3

4

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

于 2012-08-02T09:28:36.943 回答
1

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

于 2012-08-02T09:28:48.530 回答
0

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

于 2013-11-21T05:51:18.553 回答