1. 下载并验证GeoIP数据库
首先,确保下载并验证 GeoLite2-Country.mmdb 文件:
wget https://raw.githubusercontent.com/Loyalsoldier/geoip/release/GeoLite2-Country.mmdbsudo mv GeoLite2-Country.mmdb /usr/share/GeoIP/2:安装GeoIP模块
确保Nginx安装了GeoIP模块。对于大多数Linux发行版,可以使用以下命令安装:
sudo apt-get updatesudo apt-get install libgeoip1 geoip-database# 这个包通常包含GeoIP模块, 可以直接覆盖当前nginx, 不会删除现有nginx的配置。sudo apt-get install nginx-extras3:编辑Nginx配置文件
http {    # 加载GeoIP数据库  geoip2 /usr/share/GeoIP/GeoLite2-Country.mmdb {    # 获取国家代码    $geoip2_data_country_iso_code country iso_code;  }  # 映射国家代码, 默认为no,表示不允许访问。  map $geoip2_data_country_iso_code $allowed_country {    default no;    CN yes;  }
  server {    listen 80;    root /root/web/vuepress/dist; # 指定前端应用的目录    index index.html;    location / {      if ($allowed_country = no) {        # 禁止访问, 直接中断连接        return 444 ;      }      # 尝试访问静态文件,如HTML文件, 如果uri不存在,返回404错误。      try_files $uri $uri/ =404;          }    # 静态文件缓存    location ~* \.(js|css|avif|png|jpg|jpeg|gif|ico)$ {      expires max;      log_not_found off;    }  }}4:测试配置文件
运行以下命令测试Nginx配置文件是否有语法错误:
sudo nginx -t如果测试通过,重启Nginx以应用新的配置:
sudo systemctl restart nginx5. 数据库的一些其他信息
# 如只需要国家信息建议使用该库geoip2 /usr/local/GeoIP2/GeoLite2-Country.mmdb {  $geoip2_data_country "default=China" source=$remote_addr country names en}
# 如需要获取国家以及省份信息建议使用该库geoip2 /usr/local/GeoIP2/GeoLite2-City.mmdb {  $geoip2_data_country "default=中国" source=$remote_addr country names zh-CN;  # 中国  $geoip2_data_country_code country iso_code;                  # CN  $geoip2_data_country_continent continent names zh-CN;        # 亚洲  $geoip2_data_country_continent_code continent code;          # AS  $geoip2_data_province_name subdivisions 0 names zh-CN;       # 浙江省  $geoip2_data_province_isocode subdivisions 0 names iso_code; # "ZJ"  $geoip2_data_city city names zh-CN;                         # 杭州  $geoip2_data_city_longitude location longitude;              # 120.161200  $geoip2_data_city_latitude location latitude;                # 30.299400  $geoip2_data_city_time_zone location time_zone;             # "Asia/Shanghai"}