질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

GeoIp 차단룰을 htaccess 에 설정하는 방법 문의드립니다.

작성자 정보

  • 까만소 작성
  • 작성일

컨텐츠 정보

본문

항상 많은 정보 얻어갑니다. 감사합니다. ^^

geoip 를 이용하여 한국외에는 해외접속을 차단하려고 합니다.

서버환경은 아래와 같습니다.

CentOs 5.9 (64bit), Apache 2.x,  php 5.x
GeoIP-1.4.6
mod_geoip2_1.2.5

GeoIp 설치하고 httpd.conf 에는 설정하지않고...virtual host 에도 설정없이,

계정별로 각각 계정에 .htaccess 파일을 통해서 해외접속을 차단하려고 하는데요.

phpinfo() 로 설치상태 확인해보니 Apache Environment 에 GEOIP_COUNTRY_CODE 는 KR 로 잘 표시가 되어... 설치는 제대로 된 듯 합니다.

geoiplookup 의 실행경로는 .bash_profile 에 등록해두었습니다.

testuser 계정의 public_html 폴더내에 .htaccess 파일을 만들어서 아래와 같이 코드를 넣었습니다.

[.htaccess 파일내용.  퍼미션 644]

<IfModule mod_geoip.c>
    GeoIPEnable On
    GeoIPDBFile /usr/local/GeoIP/share/GeoIP/GeoIP.dat
    <Location /public_html>
          SetEnvIf GEOIP_COUNTRY_CODE KR go_in
           <Limit GET POST>
             Order Deny,Allow
             Deny from all
             Allow  from env=go_in
           </Limit>
    </Location>
</IfModule>

아파치서버 재가동하고보니... 해당 계정의 접속상태가  INTERNAL SERVER ERROR 가 발생합니다.

에러코드 살펴보니... 아래와 같이 표시가 됩니다.

[alert] [client 111.171.31.204] /home/testuser/public_html/.htaccess: GeoIPDBFile not allowed here
[alert] [client 111.171.31.204] /home/testuser/public_html/.htaccess: GeoIPDBFile not allowed here
[alert] [client 111.171.31.204] /home/testuser/public_html/.htaccess: GeoIPDBFile not allowed here

[alert] [client 111.171.31.204] /home/testuser/public_html/.htaccess: <Location not allowed here
[alert] [client 111.171.31.204] /home/testuser/public_html/.htaccess: <Location not allowed here
[alert] [client 111.171.31.204] /home/testuser/public_html/.htaccess: <Location not allowed here


<IfModule mod_geoip.c>
    GeoIPEnable On
</IfModule>

.htaccess에 요렇게만 입력하면 정상적으로 화면이 보입니다. 그런데...


<IfModule mod_geoip.c>
    GeoIPEnable On
    GeoIPDBFile /usr/local/GeoIP/share/GeoIP/GeoIP.dat
</IfModule>

이렇게 한줄이 더 들어가면 여지없이 INTERNAL SERVER ERROR 가 발생합니다.

<IfModule mod_geoip.c>
    GeoIPEnable On
    GeoIPDBFile /usr/local/GeoIP/share/GeoIP/GeoIP.dat
   GeoIPDBFile /usr/local/GeoIP/share/GeoIP/GeoLiteCity.dat
</IfModule>

이렇게 넣어도 INTERNAL SERVER ERROR 에러 발생하구요.

무슨 원인으로 이렇게 INTERNAL SERVER ERROR 가 발생하는지 도움 부탁드립니다.

항상 감사합니다. ^^

관련자료

댓글 2

냠냠이님의 댓글

  • 냠냠이
  • 작성일
/usr/local/GeoIP/share/GeoIP/GeoIP.dat 파일 업데이트 해보셨나요?
해당 파일은 국가코드 정보가 들어있는 파일로 알고 있으며, 주기적으로 업데이트를 진행 해야 합니다.

또한 해당 모듈 다시 한번 확인해보시구요 아파치 재 시작 전에 구문 테스트도 한번 해보셔요

ex) /usr/local/apache/bin/apachectl -t (구문 테스트)
ex) /usr/local/apache/bin/apachectl -M  (모듈 확인
    /usr/local/apache/bin/apachectl -l

쭈운님의 댓글

  • 쭈운
  • 작성일
Location, GeoIPDBFile은 .htaccess에서 지원하지 않으니 apache virtualhost 에 넣어보시기 바랍니다.

공지사항


뉴스광장


  • 현재 회원수 :  59,982 명
  • 현재 강좌수 :  35,534 개
  • 현재 접속자 :  134 명