推薦兩個方法,一個是nginx,第二是php裡面! A+ U4 O/ | m, C/ W @
兩者都要用上geoip,這個是maxmind的免費ip全球數據庫! C$ a+ p3 a9 M5 [$ j0 r
9 f G' Y) q; ^ G9 f
1.nginx& f. A1 ]- w9 W3 _ g' r$ G
nginx裡面有模塊叫ngx_http_geo_module,編譯的時候加上這個模塊就能使用了,
* i' o5 u, [+ Z2 V; d給個nginx配置文件實例* M! P' r! ]! p3 k
7 E1 r" y( m7 `' [
# vi /etc/nginx/nginx.conf
+ Y1 N: C( ?# j3 B6 ?/ a- \
: Z* {3 y# M, M. G, Khttp {. [0 l5 i6 ~; ] t8 m. d- ]9 j
...
; t G/ w9 @; ^2 |$ R8 }geoip_country /var/lib/GeoIP/GeoIP.dat;
. Q l, G' \( O. B; Zfastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
* O$ I* j" O' a! u2 a1 Xfastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;
. g3 i! p! k7 ~+ ^1 z0 a1 kfastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
: y. n0 v' ]+ s...8 s6 h% a( R: c7 u
}
6 y3 K, v/ E O1 Q9 k; `% c4 }( i" @9 p6 l" G- f, ]' o
server {
% v) ~8 g& k) t2 l3 |* U1 c& j...0 I* h8 E* [/ Y2 I( @, e
location / {
3 q5 s+ r- ^) n+ P' w* B root /home/vpsee/www;3 e: M1 X# Q5 f- K: O
if ($geoip_country_code !~* JP) { return 404;}) r9 U/ v) E! c6 i
#如果不匹配jp,那就404,只有jp能通過8 C4 H3 U; T+ A4 O
...
, j! {) K. g$ d* c) s }
1 j9 v/ Q" A# P7 h6 G...4 U9 E% f8 ~' l
}5 b" W& c2 Y/ K0 g& ~, G$ r, m: o
/ ~4 n; x; b8 a2 d: u
2.php,
$ K. n# _8 T8 H- X6 c4 A. z& N這個比較簡單,不需要安裝什麼,只要下載到幾樣東西就可以了& G% c) t/ C# p I: K
數據庫文件GeoIP.dat+ [: g& @3 M ?5 k( q
http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
' i7 \& K) `( Q% V( T' k5 ?, A- K, b# y/ Z* c
再加上個數據庫讀取文件,保存為 geoip.php
* [2 F: c: M( g4 g3 q% ^http://geolite.maxmind.com/download/geoip/api/php/geoip.inc
# t/ ]4 y2 H5 X1 Q% K) T) m' e( w% w, |3 ^9 l" e9 W% ]
一下這段代碼貼到自己想要進行判斷的頁面就行了6 L1 d$ i8 t: `$ s
# t9 `: O6 {" U) t5 b, Q* A
[mw_shl_code=php,true] //geophp的位置3 S3 h0 d9 I* s {
include ('geoip.php'); 5 h( c4 z7 ]& z
// GEOIP數據庫位置0 f6 Q! S* ?/ ~# Z
$gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
+ ?5 |9 r' A: T' D$ T. C- y% J- U
* ]! K" C& T5 x5 i f $country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
' \* g3 A9 h" D7 A$ L0 }& _ geoip_close($gi);
P) j. i8 Y6 G. n1 L* P! i 5 s/ `6 p+ j# D
if($country=='jp') {;} else {exit;}[/mw_shl_code]
" G5 k' R2 w- P) R
/ q0 G: {5 I ^: N8 k |