아래 사이트에서 최신 버전 확인후 wget으로 파일 다운로드 한다.
http://geolite.maxmind.com/download/geoip/
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP-1.4.6.tar.gz
wget http://geolite.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.5.tar.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
tar zxvf GeoIP-1.4.6.tar.gz
cd GeoIP-1.4.6
./configure
make;make check;make install
tar zxvf mod_geoip2_1.2.5.tar.gz
cd mod_geoip2_1.2.5
apxs -i -a -L/usr/local/lib -I/usr/local/include -lGeoIP -c mod_geoip.c
gzip -d GeoLiteCity.dat.gz
mv GeoLiteCity.dat /etc/httpd/conf.d/
httpd.conf 파일 적절한 곳에 아래 내용을 넣는다 (중국, romania 전체 차단 및 나머지 모든 국가 허용 예제)
<IfModule mod_geoip.c>
GeoIPEnable On
GeoIPDBFile /etc/httpd/conf.d/GeoLiteCity.dat
<Location />
SetEnvIf GEOIP_COUNTRY_CODE CN drop
SetEnvIf GEOIP_COUNTRY_CODE RO drop
<Limit GET POST>
Order Allow,Deny
Allow from all
Deny from env=drop
</Limit>
</Location>
</IfModule>
참고 : GeoIP 테스트 코드
#include <GeoIP.h>
int main (int argc, char *argv[]) {
GeoIP * gi;
gi = GeoIP_new(GEOIP_STANDARD);
printf(”code %s\n”,
GeoIP_country_code_by_name(gi, “yahoo.com”));
}
위 소스 코드 복사해서 test.c 로 이름 붙여 gcc -lGeoIP test.c 컴파일후 ./a.out 실행했을때 아래와 같이 나오면 정상
[root@localhost GeoIP-1.4.6]# ./a.out
code US
아래는 국가별 코드표