NGINX: 지리적 기반 블록

NGINX: 지리적 기반 블록

2022-06-03 last update

7 minutes reading Nginx
Nginx는 고성능, 경량급, 오픈소스 웹 서버로 무료로 대중에게 제공할 수 있다.다른 경량급 서버에 비해 대량의 가치 있는 기능을 가지고 있다.그 중 하나는geoip\u모듈입니다. 이 모듈은 방문객이 온 지리적 위치를 식별하는 데 사용됩니다.기본적으로 이것은 maxmind가 제공하는 데이터와 결합하여 방문자의 지리적 위치를 찾아냅니다.지리적 위치를 식별하는 장점은 서로 다른 지리적 위치에 대해 서로 다른 정책을 강제적으로 집행하는 데 있다. 예를 들어 한 기업이 북미 국가에만 개방하면geoip\u모듈을 통해 다른 지역에서 온 모든 다른 방문객을 막을 수 있다.이를 통해 GDPR(공용 데이터 보호 규정)과 같은 지역별 규정 및 규정을 준수하지 않아도 됩니다.

실시


비록 많은 방법이 시스템에서 해결 방안을 실현할 수 있지만, 이 안내서는 최소한의 작업량으로 해결 방안을 등록하는 가장 간단한 방법을 보여 준다.
  • 분명히 이 안내서의 절차를 시작하기 전에 시스템에 Nginx를 설치해야 합니다.그러나 Geo\uip\u 모듈을 설치해야 하기 때문에 Nginx만 설치하면 안 됩니다.Maxmind는 과거에dat 형식으로 데이터베이스를 발표했지만 얼마 전에 mmdb 형식으로 발표했다.이 때문에 Nginx는 ngx\uhttp\ugeoip2\u 모듈이라는 새로운 geo\uip\u 모듈이 필요합니다.그러나, 이것은 필수적인 것이 아니다. 왜냐하면 낡은dat 데이터베이스는 여전히 충분하기 때문이다.어쨌든, 만약nginx를 설치하지 않았다면, 다음 두 개의 명령을 사용하여 설정하십시오.
  • apt-get update
    apt-get install nginx
  • http\U geoip 모듈이 설치되어 있는지 확인하려면 다음 명령을 입력하십시오.
  • nginx -V
  • IP 주소와 각 국가 및 도시 이름을 포함하는 데이터베이스를 획득/구축할 수 있는 여러 가지 방법이 있다.다음 명령을 사용하여 geo\uip 데이터베이스를 설치합니다.이 방법을 사용하면 시스템에geo\u Ip 데이터베이스를 쉽게 설치할 수 있습니다.그러나 가장 이상적인 방법은 최신 정보의 업데이트에 따라 업데이트되는 새로운 복사본을 다운로드하는 것이다.따라서 아래에 제시된 세 가지 옵션 중 하나를 사용하십시오.첫 번째 옵션은 모든 일반 사용자에게 충분합니다. 두 번째 옵션은maxmind의 최신 데이터베이스를 가져오는 것입니다. 세 번째 옵션은 mmdb 데이터베이스를 각각의dat 파일 형식으로 변환합니다.
     
    이것은 시간과 자원이 필요하기 때문에 성능이 낮은 서버에 사용하는 것을 권장하지 않습니다.그러나 데이터베이스를 업데이트해야 할 경우 옵션 2를 사용합니다.그것은 파일 변환의 시간과 돈을 절약했지만, 파일은 다른 사람이 변환한 것이지, 어떤 정부측이 변환한 것이 아니기 때문에 안전성을 보장할 수 없다.옵션 3은 pip 패키지, setuptools, ipaddr, dcryptit 3개가 필요합니다.이것은 python 2를 사용하여 스크립트를 처리합니다.마지막 줄은 zip 압축 파일을 로 변환합니다.dat 파일.mmdb 파일 형식을 로 바꾸는 것을 언급했지만dat, CSV 파일을 실제로 로 변환합니다.dat 파일 형식이기 때문에geonam2fips가 필요합니다.csv 파일, 이 파일은 변환 패키지와 함께 제공됩니다.
  • 옵션 1
    apt-get install geoip-database libgeoip1
    옵션 2
    cd /usr/share/GeoIP
    wget -o maxmind.dat.gz https://bit.ly/2Gh3gTZ
    gunzip maxmind.dat.gz
    옵션 3
    cd /home/
    mkdir geolite2legacy/
    git clone https://github.com/sherpya/geolite2legacy
    apt-get install python
    apt-get install python-pip
    pip install setuptools
    pip install ipaddr
    pip install dcryptit
    cd /usr/share/
    mkdir GeoIP/
    cd /usr/share/GeoIP/
    wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.zip
    pyton /home/geolite2legacy/geolite2legacy.py -i /usr/share/GeoIP/GeoLite2-Country-CSV.zip -f
    /home/geolite2legacy/geoname2fips.csv -o /usr/share/GeoIP/GeoLite2-Country.dat
  • Nginx 구성 파일은 다음과 같습니다.평소와 같이 Linux 터미널의 첫 번째 줄에 명령을 입력하고 나머지 줄을nginx로 복사합니다.conf 파일./usr/share/GeoIP/GeoIP에 언급된 이름을 확인합니다.dat는 usr/share/GeoIP 폴더에 저장된dat 파일과 일치합니다.다음 예제에서는 한 국가만 지정하지만 여러 국가 코드를 주어진 예시로 지정할 수 있습니다. 각 국가 코드 한 줄씩.이 위치에서 사용 가능한 국가 코드 목록을 찾을 수 있습니다.http://www.maxmind.com/app/iso3166 .
  • nano /etc/nginx/nginx.conf
    geoip_country /usr/share/GeoIP/GeoIP.dat;
    map $geoip_country_code $allowed_country {
    default yes;
    LK no;
    }
  • 모든 텍스트 편집기를 통해 기본 파일을 열고 (편집하기 쉽기 때문에 나노를 선택한 다음) 두 번째 줄 뒤의 내용을 기본 파일 위치 블록의 임의의 위치에 추가합니다.코드의 작업 원리는 이렇다. 방문자가 웹 서버에 요청을 할 때,nginx는 그들의 IP 주소를 가져와 기록과 일치하여 해당하는 국가 코드를 찾고, 지도 블록에 언급된 국가가 일치하면 no를 $allowed\ucountry 변수에 분배하여 $allowed\ucountry가 응답할 수 있도록 검사한다.이 안내서에서는 "아니오"를 사용하기 때문에 방문자가 내용을 볼 수 없습니다.유사한 도메인이 여러 개 있는 경우com.lk 또는nucuta.com 또는nucuta.net는 세 번째 줄 뒤에 있는 코드를 각각'필드'에 추가합니다.conf 파일.nginx 설정이 양호하면 해당 필드의 파일은sitesavailable 폴더에 있습니다.
  • nano /etc/nginx/sites-available/default
    if ($allowed_country = no) {
    return 444;
    }
  • 다음 명령을 사용하여nginx 서버를 다시 시작합니다.이후 스리랑카 (LK) 구역에서 웹 서버에 접근하면 웹 서버가 어떤 내용도 되돌려 주지 않습니다. 아래 화면 캡처와 같습니다.nginx의 444는 어떤 내용도 대표하지 않는다.302, 301, 404 같은 다른 코드도 사용할 수 있습니다.302301을 지정하면 방문자의 URL을 다시 지정해야 합니다.
  • systemctl restart nginx

    결론
    서로 다른 지역 규칙과 조례 때문에 지리적 위치를 바탕으로 방문객을 막는 것은 일부 기업의 운영에 매우 중요하다.Nginx는 geo\uip 모듈을 통해 이러한 요구 사항을 충족합니다.이것은 maxmind 데이터베이스를 사용하여 방문자의 IP 주소에 따라 국가를 찾습니다.이 데이터베이스는 Ipv4와 ipv6와 함께 사용할 수 있습니다.maxmind가 전통적인dat 데이터베이스 형식을 사용하지 않기 때문에 그 데이터를 사용하는 유일한 방법은 새로운 파일 형식을dat 파일로 변환하거나 이미 변환된 파일 형식을 사용하거나 제3자 모듈을 사용하여 mmdb 파일 형식을 지원하는 것입니다.여기에서 제공하는python 스크립트는 결과를 보는 데 시간이 걸리더라도 변환하기에 매우 적합합니다.Maxmind는 IP 기반 검색 국가의 정확도를 99% 이상 보장합니다.따라서 어떤 기업이든 반드시 가져야 할 도구다.