Nginx服务器中配置GeoIP模块来拦截指定国家IP

2019-10-17 19:32:42于丽

然后在 web 目录中增加一个 php 文件,代码如下:

<?php
$geoip_country_code = getenv(GEOIP_COUNTRY_CODE);
$geoip_country_code3 = getenv(GEOIP_COUNTRY_CODE3);
$geoip_country_name = getenv(GEOIP_COUNTRY_NAME);

$geoip_city_country_code = getenv(GEOIP_CITY_COUNTRY_CODE);
$geoip_city_country_code3 = getenv(GEOIP_CITY_COUNTRY_CODE3);
$geoip_city_country_name = getenv(GEOIP_CITY_COUNTRY_NAME);
$geoip_region = getenv(GEOIP_REGION);
$geoip_city = getenv(GEOIP_CITY);
$geoip_postal_code = getenv(GEOIP_POSTAL_CODE);
$geoip_city_continent_code = getenv(GEOIP_CITY_CONTINENT_CODE);
$geoip_latitude = getenv(GEOIP_LATITUDE);
$geoip_longitude = getenv(GEOIP_LONGITUDE);

echo 'country_code: '.$geoip_country_code.'<br />';
echo 'country_code3: '.$geoip_country_code3.'<br />';
echo 'country_name: '.$geoip_country_name.'<br />';

echo 'city_country_code: '.$geoip_city_country_code.'<br />';
echo 'city_country_code3: '.$geoip_city_country_code3.'<br />';
echo 'city_country_name: '.$geoip_city_country_name.'<br />';
echo 'region: '.$geoip_region.'<br />';
echo 'city: '.$geoip_city.'<br />';
echo 'postal_code: '.$geoip_postal_code.'<br />';
echo 'city_continent_code: '.$geoip_city_continent_code.'<br />';
echo 'latitude: '.$geoip_latitude.'<br />';
echo 'longitude: '.$geoip_longitude.'<br />';

访问 php 文件,就会显示你当前所在 IP 的相关地理信息。

php 也提供了 GeoIP 模块,需要手动编译。也需要加载 GeoIP 库。效率上应该还是不如 Nginx 的方式。

常用指令总结
1.geoip_country database;
默认值: —
上下文: http
指定数据库,用于根据客户端IP地址得到其所在国家。 使用这个数据库时,配置中可用下列变量:

(1)$geoip_country_code
双字符国家代码,比如 “RU”,“US”。
(2)$geoip_country_code3
三字符国家代码,比如 “RUS”,“USA”。
(3)$geoip_country_name
国家名称,比如 “Russian Federation”,“United States”。

2.geoip_city database;
默认值: —
上下文: http
指定数据库,用于根据客户端IP地址得到其所在的国家、行政区和城市。 使用这个数据库时,配置中可用下列变量:
(1)$geoip_city_country_code
双字符国家代码,比如 “RU”,“US”。
(2)$geoip_city_country_code3
三字符国家代码,比如 “RUS”,“USA”。
(3)$geoip_city_country_name
国家名称,比如 “Russian Federation”,“United States”。
(4)$geoip_region
国家行政区名(行政区、直辖区、州、省、联邦管辖区,诸如此类),比如 “Moscow City”,“DC”。
(5)$geoip_city
城市名称,比如 “Moscow”,“Washington”。
(6)$geoip_postal_code
邮编。

3.geoip_proxy address | CIDR;