推薦兩個方法,一個是nginx,第二是php裡面
+ V+ _/ r: i0 F/ n# Q' ?7 i兩者都要用上geoip,這個是maxmind的免費ip全球數據庫
( l: \$ g0 R0 Z; S- r+ F5 b3 J9 f* p" A7 y' b4 X% H( w
1.nginx
% @6 u3 Q! c9 {( |3 G7 T i; E& ^nginx裡面有模塊叫ngx_http_geo_module,編譯的時候加上這個模塊就能使用了,
- I7 u: [. T% s% ~2 g給個nginx配置文件實例* [' @7 N( k1 A0 Z4 f
- R& F9 i8 A; s% V$ K- B# vi /etc/nginx/nginx.conf
, b$ h' F$ V: O, T. Z% Y7 G7 p% H- ]# K' c; f& }; z% D
http {
$ e m1 J; g( F; L6 \' H# K0 f...
4 s' {8 `7 b! B2 N N8 vgeoip_country /var/lib/GeoIP/GeoIP.dat;
5 l+ f' s3 \4 a- G8 h7 nfastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
- c+ ?3 b. E4 O; H% m9 {5 ^fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;" l2 W w: C& J- k7 l0 f
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
2 \/ j1 ^, D% b8 R7 A l1 K7 s...* J l& ]+ M5 A4 a1 G* o
}% E# D4 v8 m8 m1 B8 d& @* d
4 _1 {8 v2 x/ V% O L9 E! t2 }
server {9 {! D5 Z0 B3 U3 I2 x
...
* j+ v8 b- y, b location / {: c" t- o2 w# b' z1 ?3 e6 L
root /home/vpsee/www;* O' z, l1 @# q. ^ a* x
if ($geoip_country_code !~* JP) { return 404;}
5 a) [) R2 d9 R$ b# _$ | #如果不匹配jp,那就404,只有jp能通過
/ t" U1 ]% d" B% L p5 Y ...
5 w/ p7 a- ^1 J# [ }% h" J3 a" E3 U# S
...' g% h6 Z& ]+ Z) w) Q
}; A7 q4 ~" p1 N7 l7 B& Q; O9 W
. e5 B8 ?* P! F3 ?
2.php,
( Y" y) {8 T+ ^: V這個比較簡單,不需要安裝什麼,只要下載到幾樣東西就可以了
4 x5 H3 d. p/ m! C: c F數據庫文件GeoIP.dat
4 J% D% g) Q/ P! E9 O* D+ C2 h1 jhttp://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
5 R, y! A: k" t1 D6 x& ?; [
) h5 `6 r; H: A+ a! K# I再加上個數據庫讀取文件,保存為 geoip.php$ i! }$ [3 k5 x
http://geolite.maxmind.com/download/geoip/api/php/geoip.inc" b3 P& Y& v# |2 I
3 ]. E9 I3 h) a# U, ]# [* w) u1 \
一下這段代碼貼到自己想要進行判斷的頁面就行了
. F4 ]$ T) b- w7 \5 q/ s; q% `) z6 Q7 [% H L# Y! ^$ T
[mw_shl_code=php,true] //geophp的位置
* [' v% ]* C' Y5 a& P5 [; x include ('geoip.php'); ) G" A# t0 i9 ?- X& S4 H
// GEOIP數據庫位置+ A3 ~1 Q% k' a$ k7 `3 x6 G6 P$ O: B
$gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);% v+ e, W# _) l! |* M1 F5 @
8 T( S' Z# _3 L. s- V5 B7 H $country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);% S( Q1 j- |% X2 i9 M7 |) f0 U
geoip_close($gi);
. Y# C7 n6 W+ J" |6 A
3 `9 N% U& A/ Q0 {( z if($country=='jp') {;} else {exit;}[/mw_shl_code]
% ?. U2 p8 }$ n: X* Q2 D& ^
5 M4 a4 x3 J2 F |