使用 cloudflare 时如何阻止国家访问服务器?

How to block countries from server when using cloudflare?

我试图用以下代码阻止国家 nginx.conf:

   geoip_country /usr/share/GeoIP/GeoIP.dat;
    map $geoip_country_code $allow_visit {
       default yes;
      RU no;
   }

但是我使用 CLoudFLare /cdn service.so 当我阻止一些 countries.sometimes 我无法登录我的 system.Coz cloudflare 服务器可能在我的阻止 countries.So 我应该删除 cloudflare ips from block country list.But 我该怎么做? 有什么建议吗?
我在我的服务器上使用 ubuntu 14.04 / nginx..

*

and now im under the attack.You guys know, theres cyber war so i should solve this problem fastly.

*

提前致谢。

如果您使用的是免费计划 (cloudflare),您将无法获得访问者的 IP 地址,因此使用 geoip_country 匹配的 IP <-> 国家/地区不起作用。

您应该在 CloudFlare 中打开 IP Geolocation,并配置 nginx 以读取该国家/地区代码。

同时,请确保您的源服务器只接受来自 CloudFlare IP range 的连接。

关于如何配置 nginx 的详细信息:http://nginxlibrary.com/using-cloudflare-for-country-blocking/

CloudFlare 允许您在 CloudFlare 级别阻止某些国家/地区访问您的网站。为此:

  1. Select 您在 CloudFlare 控制面板中的域
  2. Select "Firewall" 选项卡
  3. 在 "IP Firewall" 选项卡上,您可以输入 IP、IP 范围或 国家/地区,然后单击阻止。

这将在 CloudFlare 级别阻止该国家/地区访问您的所有网站,甚至在任何攻击到达您的服务器之前。

如果出于任何原因需要使用 Nginx 解决方案而不是 CloudFlare 的防火墙来阻止它,您可以查看在控制面板的 "Network" 选项卡下启用 "IP Geolocation"。这会将 header "HTTP_CF_IPCOUNTRY" 添加到所有请求中,并将在 header.

中包含国家代码(即美国、英国、俄罗斯)

如果您需要阻止任何基于特定 IP 的请求,或自行执行 IP 查找。然后你应该使用默认的 CloudFlare header,它包含在每个请求中,该请求包含名为 "CF-Connecting-IP" 的客户端 IP。 对于未来的信息,CloudFlare 有一篇很好的 article 写在这里关于他们如何处理他们的 headers。