推薦兩個方法,一個是nginx,第二是php裡面
9 r; ?; |0 N" F5 Z/ \1 Y兩者都要用上geoip,這個是maxmind的免費ip全球數據庫- R/ [; C3 k. U/ d
8 J$ W, Q2 m. m. j5 E, k7 @- D
1.nginx
( R& ^- B, K; E. B9 X; Mnginx裡面有模塊叫ngx_http_geo_module,編譯的時候加上這個模塊就能使用了,3 ^% u7 \* G- \" t: p5 q3 O- A$ `
給個nginx配置文件實例, F7 l, g/ a$ v; r; P
2 F/ Z$ l7 L0 L$ o1 u% ^9 ]# vi /etc/nginx/nginx.conf1 O) D0 I6 s5 a4 r: H
' n/ r. f% y$ F
http {
' @% R& q3 Q t: u...- d! B" F, l( V' X
geoip_country /var/lib/GeoIP/GeoIP.dat;
' G+ @# h, H- C( \; Mfastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;* Y- x l% v. V5 @$ d6 G; ^
fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;
3 Z0 N4 e3 `$ u L- q9 {fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
9 P. U! j" E! ~7 A...! l. z v7 I' d/ ?
}
2 ?: O; g& E. A! Q
p8 l: K$ B4 Z- Lserver {
j$ k$ o. d4 ?# V2 R& a...
& }% |$ }7 L9 W) _* c location / {
, j' ?- t7 }7 Q$ s5 \# y root /home/vpsee/www;
' L- V" C1 \) d$ i* Z3 B if ($geoip_country_code !~* JP) { return 404;}
% P) Y6 Z: C& q! L #如果不匹配jp,那就404,只有jp能通過9 w% [4 y! J F* ]
...$ `* M& C z% [$ _1 |( n
}, C' s$ ?. j5 {0 h) o/ y4 h
...$ k7 [' }4 z+ i7 e6 a, B
}
9 |4 O) K- x' p9 A; E. J+ |1 b" C1 U" F, ~8 b( ^ `* z+ o! a
2.php,
3 O0 x _ _7 l; O. o, ?* [! u; S1 I這個比較簡單,不需要安裝什麼,只要下載到幾樣東西就可以了
1 b/ Y E+ ]& s8 G數據庫文件GeoIP.dat
' x0 ?, b( c7 I( G9 zhttp://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz) W7 v$ `2 K( j, n1 d2 }
. `+ q" p, F7 Q
再加上個數據庫讀取文件,保存為 geoip.php
- e3 O" @. m& A& f3 \, \6 Fhttp://geolite.maxmind.com/download/geoip/api/php/geoip.inc
4 C/ x6 T7 s9 d) K w9 e9 ^1 J% O0 h3 ^' n; B
一下這段代碼貼到自己想要進行判斷的頁面就行了
/ m! s9 M) l& Y7 n2 p
+ Q6 {( ?- G. a+ G9 c[mw_shl_code=php,true] //geophp的位置" N0 {6 Y4 x- i
include ('geoip.php'); 0 P1 _" m. a; s# @4 ?! {$ f. w7 [ U3 ]
// GEOIP數據庫位置( X2 `# j: a. S( V/ B2 ^( E
$gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
o$ r9 c. ?7 v W6 q2 G+ {. x* H" b3 [4 a! s
$country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);& Y+ Y3 I; t3 \9 T; v
geoip_close($gi);- W) E0 I3 h5 L" N7 Q+ F6 T
0 j1 ?* _' `; g6 s1 C" n$ I+ h if($country=='jp') {;} else {exit;}[/mw_shl_code]) Y5 b, |2 }. H; c- k( Y+ H, J+ t" d
' |2 Y6 v) F9 f J |