推薦兩個方法,一個是nginx,第二是php裡面& d: K5 \- P! V, n- c
兩者都要用上geoip,這個是maxmind的免費ip全球數據庫
9 o0 y0 W+ }+ I0 {2 X6 {
% X& F% Y; X! n+ l1.nginx
) _* S: m( Z+ v! V0 bnginx裡面有模塊叫ngx_http_geo_module,編譯的時候加上這個模塊就能使用了,
9 Q$ d+ c; u% ~* |; Q6 ?) m: p4 d; W給個nginx配置文件實例 e6 c0 W8 C- C
9 G/ I, _6 V4 _ v. i! D
# vi /etc/nginx/nginx.conf1 F @$ C' W" l2 _/ ?& a
: F6 E! D" ^! Chttp {
( j# {5 H/ Y* E& n9 u$ T...
# U$ W; Q8 E( qgeoip_country /var/lib/GeoIP/GeoIP.dat;$ A0 n1 p1 F8 @' |' I, Q
fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code; B$ s9 W# t# R1 K* d2 B! H0 q$ S
fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;# ]4 [3 I V4 Y, r7 t! C6 V5 @
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
2 [0 ^4 W) H' l$ q" ^...
t/ b4 M, `; C5 j}
7 P S* }7 @0 c" P; S! C% S0 w; N
3 j' g! L+ S; J; r2 Userver {
8 H" [ d& W" t8 D...
' ^2 q. n% F0 }$ T location / {
/ N5 t; `. }* z4 \ root /home/vpsee/www;
) H7 y$ G r3 N: Q9 _) j if ($geoip_country_code !~* JP) { return 404;}% x+ m- ^+ i- Z+ I# z2 U+ x. c
#如果不匹配jp,那就404,只有jp能通過- i8 a7 e% M+ m2 q6 R s, |
...) _9 _+ h( j+ ~- N
}
7 ]2 C v! i% M& D( c+ A4 B1 b2 g...0 H( r+ U% a% Z5 o3 i' ^
}' }1 r* c0 t( e% {7 G% C
; V" l% K2 B- W9 Q' Q* u% P
2.php,
: w; R8 I8 H% @- n7 y# x' Q這個比較簡單,不需要安裝什麼,只要下載到幾樣東西就可以了
5 C* L( t( b( e2 W數據庫文件GeoIP.dat
/ q6 K4 e4 L0 T- R% R$ F' vhttp://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
" g/ O$ Y5 t7 u, J1 S, U. a9 }# n4 _( \7 w. e; Q
再加上個數據庫讀取文件,保存為 geoip.php( F) L. q/ | h' e) K
http://geolite.maxmind.com/download/geoip/api/php/geoip.inc
2 r! g5 ^1 g: x$ ^* Z0 u$ Y" J0 k
; {; w5 T9 U# x, O一下這段代碼貼到自己想要進行判斷的頁面就行了1 g8 ?! F5 T) H! M5 Z
( N m4 R# i$ j- u; i
[mw_shl_code=php,true] //geophp的位置. [7 H9 K6 N2 [/ h# ?! Z9 ~) B9 ?
include ('geoip.php');
* G5 f e, N1 g5 g0 ] // GEOIP數據庫位置
g" ]( g8 e0 b* i' \( J7 u, m $gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
0 F+ E/ Z1 h) [, K i7 a: f/ ^2 q# Q
$country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
( X: s, |" Q1 l$ l1 v& P geoip_close($gi);
2 q- U2 p/ ?. ]
5 g/ }. ?' m7 u; o6 d if($country=='jp') {;} else {exit;}[/mw_shl_code]
' s! {1 L- f1 T# P
, ]: z: E3 E# a6 I/ P5 c& I |