메뉴 닫기

중국에서 접속하는데 클라이언트만 고생해야 하나!(geoip)

중국에서는 google관련 ip가 광역 차단되어 있기 때문에, 관련 api가 작동하지 않아

관련된 api를 사용하는 서버 접속에 어려움이 있습니다.

http://idchowto.com/?p=1229

소스에서 아에 빼버려도 되겠지만 geoip를 이용하여 중국에서 접속할 경우 해당 api를 안쓰게 하는

방법을 간단한 예제로(실제 서비스에서는 간단하지 않겠지만) 알아보도록 하겠습니다.

우선 서버에 geoip 모듈을 설치 해야 합니다.

geoip란 접속자가 어느 국가에서 접속했는지 알려주는 모듈이라고 이해하시면 쉽습니다.

Geoip 설치

Wget http://www.maxmind.com/download/geoip/api/c/GeoIP-latest.tar.gz

tar xvfz GeoIP-latest.tar.gz

cd GeoIP-1.5.0/

./configure –prefix=/usr/local/GeoIP

make && make install

 

php geoip 모듈 설치.

Wget http://pecl.php.net/get/geoip-1.0.8.tgz


tar xvfz geoip-1.0.8.tgz


cd geoip-1.0.8


/usr/local/php/bin/phpize(yum
설치시 위치는 /usr/bin/phpize)


./configure –with-php-config=/usr/local/php/bin/php-config –with-geoip=/usr/local/GeoIP

(yum 설치시 php-config 위치는 /usr/bin/php-config)

make && make install

 

php.ini에 등록.

vi /usr/local/Zend/etc/php.ini

(yum 설치시 위치는 /etc/php.ini)

extension_dir = “/usr/local/php/lib/php/extensions/no-debug-zts-20060613/”

(yum 설치시 위치는 extension_dir = “/usr/lib64/php/modules/”)

enable_dl = On

extension=”geoip.so”

geoip.custom_directory=/usr/local/share/GeoIP(데이터 파일이 들어갈 자리로 변경 가능)

 

geoip data 파일 다운로드

cd /usr/local/share/GeoIP (php.ini 파일에 커스텀 디렉토리로 설정한 위치)

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz

gzip -d GeoIP.dat.gz

 

phpinfo로 확인.

Vi phpinfo.php

<?php phpinfo(); ?> 입력 후 쓰기종료.

웹에서 확인.

geoip

예제

<?php

$country = geoip_country_code_by_name(‘사이트 주소‘);

if($country==”CN”){

echo ‘중국에서접속 하셨군요!. ‘;

}

else {

echo ‘환영 합니다 😀 ‘;

}

?>

if문을 이용한 아주 간단한 예제 입니다. 아이피를 판별하여 중국일 경우에는, 중국에서 접속했다는 문구가

그 외에 국가에서는 환영한다는 문구가 나옵니다. 테스트를 위해 변수가 아닌 특정 사이트의 주소를 넣었습니다.

1)cloudv.kr

cloudv.kr

 

2)taobao.com

taobao

마무리

이처럼 cloudv.kr로 지정했을때 한국이기 때문에 환영한다는 메세지가 나왔고 중국의 온라인 쇼핑몰인

Taobao.com으로 지정 했을때는, 중국에서 접속했다는 문구가 나와습니다.

좀 더 생각하면 이 모듈로 중국 쪽 클라이언트를 확인 할 수 있고. 확인된 클라이언트들은 google api

사용되지 않게 if문으로 처리가 가능하게 되니, google api 를 사용하면서 중국에서의 접속도 문제 없을

거라 생각됩니다.

 

 [polldaddy rating=”7739789″]

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다