推荐两个方法,一个是nginx,第二是php里面
两者都要用上geoip,这个是maxmind的免费ip全球数据库
1.nginx
nginx里面有模块叫ngx_http_geo_module,编译的时候加上这个模块就能使用了,
给个nginx配置文件实例
# vi /etc/nginx/nginx.conf
http {
...
geoip_country /var/lib/GeoIP/GeoIP.dat;
fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
...
}
server {
...
location / {
root /home/vpsee/www;
if ($geoip_country_code !~* JP) { return 404;}
#如果不匹配jp,那就404,只有jp能通过
...
}
...
}
2.php,
这个比较简单,不需要安装什么,只要下载到几样东西就可以了
数据库文件GeoIP.dat
http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
再加上个数据库读取文件,保存为 geoip.php
http://geolite.maxmind.com/download/geoip/api/php/geoip.inc
一下这段代码贴到自己想要进行判断的页面就行了
[mw_shl_code=php,true] //geophp的位置
include ('geoip.php');
// GEOIP数据库位置
$gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
$country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);
if($country=='jp') {;} else {exit;}[/mw_shl_code]
|