推薦兩個方法,一個是nginx,第二是php裡面
; {8 z9 _4 i! S' I' S& s兩者都要用上geoip,這個是maxmind的免費ip全球數據庫1 {) y9 P3 I/ ]3 r5 W. w5 ?- w
5 s& G2 Z$ o5 @! g
1.nginx
. r2 x% k& |) ~9 _( }2 xnginx裡面有模塊叫ngx_http_geo_module,編譯的時候加上這個模塊就能使用了,: O( o7 w% m# B0 Y
給個nginx配置文件實例' o! Z9 I0 T% h3 x! s3 ^
0 l4 l% u' G* |- `* U
# vi /etc/nginx/nginx.conf: Q5 P! m% m! f9 r( K; o: _ G
) K8 c. o/ ^4 t( X
http {( l) k2 ^& k% X0 `; P; [# T
...
2 p! g& C0 |0 Vgeoip_country /var/lib/GeoIP/GeoIP.dat;
0 }- u3 U7 G8 A5 N* j8 T; b8 Cfastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;% O* Y- {, m/ l. C5 D! U
fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;5 H5 _ s- _% N3 r& F
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;7 C8 {* \0 h/ y3 @: d# A8 R7 N
...& f/ F/ b9 N# H3 @4 P6 p
}
$ J z( D1 w6 f2 B2 n% S# x1 e1 s( w7 Q: _/ H+ L
server {. K. r" o% X5 B
...
# n( O9 `3 b" M4 c! [1 I# s location / {4 y3 c2 q# K l/ U2 w+ K0 z# S/ l
root /home/vpsee/www;
3 [" M* b1 H0 J# m; { ? @ if ($geoip_country_code !~* JP) { return 404;}3 o, M+ {: C+ u% G0 k, G: [2 H
#如果不匹配jp,那就404,只有jp能通過0 L5 |$ F1 c& j R
...
+ u$ g" N2 l( x% j1 @- y1 c9 r }
& o% I, ]$ e3 S* I7 C2 h...# k5 T5 Z( q: n4 A$ u
}) e* ]4 e+ `: Z. N( r3 T6 a3 b& S
; |8 h7 g" w0 r
2.php,
% `9 J$ R5 g$ i3 p+ n H* Z這個比較簡單,不需要安裝什麼,只要下載到幾樣東西就可以了) N7 z3 t; T' ^- d9 h1 l) F
數據庫文件GeoIP.dat
9 ]* F/ F8 C, b O& q/ }http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
* ^0 B0 V4 l- k2 N. P* Y# q5 v/ c
8 l, G, S5 H! O再加上個數據庫讀取文件,保存為 geoip.php" B5 s$ U/ i" j7 d3 H6 b
http://geolite.maxmind.com/download/geoip/api/php/geoip.inc& X9 W3 l. t. y/ M- [* ~! h
& _- V! T n6 a一下這段代碼貼到自己想要進行判斷的頁面就行了8 i( T4 n9 T% t
& P" t- v# o5 a% \ |0 j
[mw_shl_code=php,true] //geophp的位置, J* ^! P! A$ P/ m5 n
include ('geoip.php');
9 F6 Z7 c$ g2 Y9 P, Y // GEOIP數據庫位置$ Z# `" y/ i* }# }3 y& K1 h
$gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
5 }* j3 m" h% q) g1 t
5 [, @1 {3 Z6 T3 ?0 E $country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);) n) P4 p8 Q& i+ V" x7 R: L
geoip_close($gi);
8 n4 L" y* {5 A6 D% K, l' m
5 }2 y6 P! c; P if($country=='jp') {;} else {exit;}[/mw_shl_code]& n! M; O1 \* q3 _( `- n
5 E) E3 U' s& V+ T1 T K/ u5 E; Z
|