1

我想阻止特定国家的访问者www.mainwebsite.com通过 Nginx 和 GeoIP 模块访问我的网站。

首先我试穿了www.test.comwww.test.com在尝试之前,我在测试网站上遵循了哪些步骤www.mainwebsite.com

  1. 安装 GeoIP:
sudo apt update && sudo apt-get install geoip-database
  1. 检查 GeoIP 模块是否安装:
nginx -V 2>&1|grep --color=always with-http_geoip_module
  1. 下载 GeoIP 数据库:
sudo mkdir /etc/nginx/GeoIP/

将 GeoIP.dat 文件放置到 /etc/nginx/GeoIP/ 位置。

  1. 配置 Nginx 和虚拟主机。须藤 vi /etc/nginx/nginx.conf
http{
##
# Basic Settings
##
      geoip_country /etc/nginx/GeoIP/GeoIP.dat;
      map $geoip_country_code $allowed_country {
        default yes;
        IN no;
      }

}

保存并退出。

  1. sudo vi /etc/nginx/site-available/test.com 在服务器外开始添加地图行{......}
map $geoip_country_code $allowed_country {
 default yes;
 IN no;
}

之后,在 server{......} 设置中,添加 IF 条件。

if ($allowed_country = no) {
     return 403;
 }

保存并退出。

  1. 重新加载并重启 nginx
sudo service nginx reload
sudo service nginx restart

因此www.test.com直接托管在test-server-01 具有公共网络/IP 的 Ec2 实例上,阻止工作并且用户无法从被阻止的国家/地区访问。

www.mainwebsite.com托管到经典负载均衡器,而 ec2 实例附加到经典负载均衡器。

为了测试,我创建了服务器的 2 个副本服务器test-server-01并创建了新的负载均衡器,并将两个副本服务器连接到负载均衡器后面并指向www.test.com新的负载均衡器。但是 Geo Country 阻止不起作用,所以我在第 5 点中提到的 IF 条件(如果条件)上方添加了 2 行,然后阻止工作。

real_ip_header X-Forwarded-For;
set_real_ip_from 0.0.0.0/0;

现在我按照相同的步骤 1 到 6 对&www.mainwebsite.com进行了更改,但国家/地区屏蔽不起作用。nginx.conf/etc/nginx/site-available/mainwebsite.com

我在这里怀疑,对于www.test.com/etc/nginx/site-available/test.com和链接文件的内容/etc/nginx/site-enabled/test.com是相同的。

但是对于www.mainwebsite.com,文件的内容/etc/nginx/site-available/mainwebsite.com并不/etc/nginx/site-enabled/mainwebsite.com相同。

/etc/nginx/site-enabled/mainwebsite.com有一些额外的内容,例如:在 server{} 块之外

# Expires map
map $sent_http_content_type $expires {
    default                    off;
    text/html                  epoch;
    text/css                   max;
    application/javascript     max;
   ~image/                     max;
    application/font-woff      max;
}

并在 server{} 块内。

    server_name  www.mainwebsite.com;
    rewrite ^/blog/blogs$ https://www.mainwebsite.com/blogs permanent;
    rewrite ^/companies https://www.mainwebsite.com.com/company permanent;
    rewrite ^/events-2/* https://www.mainwebsite.com/events permanent;

这是国家封锁不起作用的实际原因吗?或者还有其他原因?请帮帮我。

4

0 回答 0