Geoip 설치방법  -  리눅스  2015. 8. 2. 16:08

공유하기

SSH 에서 작업합니다.

 

1. GeoIP 설치

cd /home/root

mkdir GeoIP

wget http://www.maxmind.com/download/geoip/api/c/GeoIP-1.4.4.tar.gz

tar xvfz GeoIP-1.4.4.tar.gz

cd GeoIP-1.4.4

./configure --prefix=/home/root/GeoIP

make

make install

 

 

2. mod_geoip2 설치

cd /home/root

wget http://www.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.4.tar.gz

tar xvfz mod_geoip2_1.2.4.tar.gz

cd mod_geoip2_1.2.4

/usr/local/apache/bin/apxs -a -i -L/home/root/GeoIP/lib -I/home/root/GeoIP/include -lGeoIP -c mod_geoip.c

 

 

3. httpd.conf 수정

하단에 아래내용을 추가

<IfModule mod_geoip.c>
        GeoIPEnable On
        GeoIPDBFile /home/root/GeoIP/share/GeoIP/GeoIP.dat
</IfModule>

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{Host}i %{GEOIP_COUNTRY_CODE}e" digimoonlog

 

CustomLog logs/access_log digimoonlog

 

 

 

4. /etc/init.d/httpd restart 후 access log 에 국가 코드가 출력되는지 확인.

116.34.62.xxx - - [13/Aug/2013:09:45:32 +0900] "GET /rb/layouts/soyou01/image/linebg.png HTTP/1.1" 200 137733 "http://ibneer.com/rb/" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" KR

 

* geoip IP 데이터 업데이트

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

GeoIP.dat 파일을 /home/root/GeoIP/share/GeoIP/ 에 덮어쓰기

 

 

* 활용방법.

1. access log 에서 국가코드 확인 처리

2. PHP    $_SERVER["GEOIP_COUNTRY_CODE"]    로 접속자 국가코드 확인가능

3. 아파치 설정(httpd.conf)으로 특정 국가 접속 제한 가능

<Directory "/home/htdocs">
SetEnvIf GEOIP_COUNTRY_CODE KR go_in
SetEnvIf Remote_Addr 192.168.0.[1-5] go_in
Order Deny,Allow
Deny from all
Allow from env=go_in
</Directory>

위의 예문은 대한민국 아이피와 192.168.0.1~5 까지만 접속을 허용합니다.

 

 

 

PS. 와이즈기가 NAS 의 httpd.conf 상... log_config_module 의 내용을 변경해야 로그가 중복되지 않고 생성되더군요.

 <IfModule log_config_module>
    #
    # The following directives define some format nicknames for use with
    # a CustomLog directive (see below).
    #
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{GEOIP_COUNTRY_CODE}e" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b %{GEOIP_COUNTRY_CODE}e" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      # LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O %{GEOIP_COUNTRY_CODE}e" combinedio
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O %{GEOIP_COUNTRY_CODE}e"
    </IfModule>

    #
    # The location and format of the access logfile (Common Logfile Format).
    # If you do not define any access logfiles within a <VirtualHost>
    # container, they will be logged here.  Contrariwise, if you *do*
    # define per-<VirtualHost> access logfiles, transactions will be
    # logged therein and *not* in this file.
    ##
    #CustomLog "logs/access_log" common

    #
    # If you prefer a logfile with access, agent, and referer information
    # (Combined Logfile Format) you can use the following directive.
    
    CustomLog "logs/access_log" combined
</IfModule>

 

그리고 하단에

 <IfModule mod_geoip.c>
        GeoIPEnable On
        GeoIPDBFile /home/root/GeoIP/share/GeoIP/GeoIP.dat
</IfModule>

 

요것만 추가해주면 됩니다.

각자 서버에 맞게 사용하면 될거 같네요.


'리눅스' 카테고리의 다른 글

Transmission daemon 실행 권한 변경  (0) 2015.09.30
iptables  (0) 2015.07.28
리눅스 램디스크  (0) 2015.07.28
고정폭 글꼴 consolas, VeraMono  (0) 2015.07.09
Linux 코롬 패키지 백엔드 초기화에 실패했다고 뜰 때  (0) 2015.07.09

Share to Facebook Share to Twitter Share to MySpace 다음구독 한rss구독