Gjennomføring
Selv om det er mange måter å implementere løsningen på i systemet, viser denne guiden den enkleste måten å registrere den med minst mulig innsats.
- Åpenbart må Nginx installeres i systemet før du starter trinnene i denne veiledningen. Imidlertid er det ikke nok å ha Nginx installert, da det også krever at geo_ip_module installeres. Maxmind pleide å gi ut databasen sin i dat-format, men siden for en stund siden ble den utgitt i mmdb-format. Dette gjør at Nginx krever en ny geo_ip_module kalt ngx_http_geoip2_module. Det er imidlertid ikke påkrevd da den gamle datdatabasen fremdeles er tilstrekkelig. Uansett, hvis nginx ikke er installert, sett den opp med følgende to kommandoer.
apt-get install nginx
- Skriv inn følgende kommando for å sikre at http_geoip-modulen er installert.
- Det er flere måter å skaffe / bygge databasen som inneholder IP-adresser, og deres respektive land, bynavn. Installer geo_ip-databasen med følgende kommandoer. Ved å bruke denne metoden blir det enkelt å installere geo_Ip-databasen i systemet. Den mest ideelle måten er imidlertid å laste ned en fersk kopi ettersom de er oppdatert med den nyeste informasjonen. Så bruk ett av de tre alternativene nedenfor. Det første alternativet er nok for enhver gjennomsnittlig bruker, 2nd alternativet er å få den nyeste databasen over maxmind, det tredje alternativet konverterer mmdb-databasen til sitt respektive datfilformat.
Det er tid og ressurskrevende, og anbefales derfor ikke for svake servere. Imidlertid, hvis det fremdeles er behov for oppdatert database, så bruk alternativet 2. Det sparer tid og penger for å konvertere filen, men sikkerheten kan ikke garanteres ettersom den konverteres av noen andre, ikke av noen offisiell part. Alternativ 3 krever 3 pip-pakker, setuptools, ipaddr, dcryptit. Og den bruker python 2 til å behandle skriptet. Den siste linjen konverterer zip-arkivet til .dat-fil. Selv om det er nevnt om konvertering av mmdb filformat til .dat, her konverterer den faktisk en CSV-fil til en .dat filformat, og dermed krever det geoname2fips.csv-fil som følger med konverteringsfilpakken.
valg 1
apt-get install geoip-database libgeoip1Alternativ 2
cd / usr / del / GeoIPwget -o maxmind.dat.gz https: // bit.ly / 2Gh3gTZ
gunzip maxmind.dat.gz
Alternativ 3
cd / hjem /mkdir geolite2legacy /
git klon https: // github.com / sherpya / geolite2legacy
apt-get installer python
apt-get installer python-pip
pip install setuptools
pip installer ipaddr
pip installer dcryptit
cd / usr / del /
mkdir GeoIP /
cd / usr / del / GeoIP /
wget https: // geolitt.maxmind.no / nedlasting / geoip / database / GeoLite2-Country-CSV.glidelås
pyton / home / geolite2legacy / geolite2legacy.py -i / usr / share / GeoIP / GeoLite2-Country-CSV.glidelås -f
/ hjem / geolite2legacy / geoname2fips.csv -o / usr / share / GeoIP / GeoLite2-Country.dat
- Konfigurer Nginx-konfigurasjonsfilen som følger. Skriv inn kommandoen på første linje i Linux-terminalen som vanlig, og kopier resten av linjene til nginx.conf-fil. Forsikre deg om at navnet er nevnt i / usr / del / GeoIP / GeoIP.dat samsvarer med datafilen som er lagret i usr / share / GeoIP-mappen. Selv om det i det følgende eksemplet spesifiserer bare ett land, kan flere landskoder spesifiseres som gitt eksempel med en linje per landskode. Den tilgjengelige landekodelisten for land kan finnes på dette stedet. http: // www.maxmind.com / app / iso3166.
geoip_country / usr / share / GeoIP / GeoIP.dat;
kart $ geoip_country_code $ allow_country
standard ja;
LK nei;
- Åpne standardfilen via hvilken som helst tekstredigerer (nano foretrekkes da det er ganske enkelt å redigere med den), og legg deretter til innholdet siden 2nd linje til mellom hvor som helst i stedsblokk i standardfilen. Koden fungerer slik, når en besøkende gjør en forespørsel til webserveren, henter nginx sine IP-adresser og samsvarer med postene for å finne den respektive landskoden. Hvis landet nevnt i kartblokken samsvarer, tildeles nei til $ allow_country-variabelen, og derved sjekke $ allow_country gjør det mulig å manipulere svaret. I denne guiden bruker den nei, og dermed nektes den besøkende å se innholdet. Hvis det er flere domener som .com, .lk, eller nucuta.com, eller nucuta.nett legg til koden siden linje 3 til hvert "domene".conf-fil også. Hvis nginx er konfigurert godt, ligger filen til det respektive domenet i nettsteder som er tilgjengelig.
hvis ($ allow_country = nei)
retur 444;
- Start nginx-serveren på nytt med følgende kommando. Heretter får du tilgang til webserveren fra et hvilket som helst sri lankansk (LK) domene, og webserveren returnerer ingenting som vist i de følgende skjermbildene. 444 i nginx representerer ingenting. Enhver annen kode som 302, 301, 404 kan også brukes her i stedet. Hvis 302,301 er spesifisert, bør det også spesifiseres en URL for å omdirigere den besøkende.
Konklusjon
Å blokkere besøkende basert på geografi er viktig for enkelte virksomheter å fungere på grunn av ulike regionale regler og forskrifter. Nginx tilfredsstiller slike behov med sin geo_ip-modul. Den bruker maxmind-databaser for å finne landet etter den besøkendes ip-adresse. Databasen fungerer med både Ipv4 og ipv6. Siden maxmind avviklet det eldre datadatabaseformatet, er den eneste måten å bruke dataene på, enten å konvertere det nye filformatet til datfilen eller bruke en allerede konvertert, eller bruke en tredjepartsmodul for Nginx for å støtte mmdb-filformat. Python-skriptet gir her er ideelt for konvertering selv om det tar litt tid å se resultatet. Maxmind garanterer over 99% nøyaktighet i å finne landet basert på IP; Derfor er det et must-ha verktøy for enhver bedrift.