Nginx

NGINX-blokk basert på geografisk plassering

NGINX-blokk basert på geografisk plassering
Nginx er en høy ytelse, lett, åpen kildekode-webserver som er tilgjengelig for publikum gratis. Den har enormt mange verdifulle funksjoner sammenlignet med andre lette servere. En av slike funksjoner er dens geoip_module, som brukes til å identifisere den geografiske geografiske plasseringen der den besøkende kommer. Som standard bruker den i kombinasjon med data levert av maxmind for å finne ut den geografiske plasseringen til den besøkende. Fordelen med å identifisere den geografiske plasseringen er å håndheve forskjellige policyer til forskjellige geografiske steder, for eksempel hvis en bedrift bare er tilgjengelig for land i Nord-Amerika, med geoip_module kan den blokkere alle andre besøkende som kommer fra andre regioner. Dette sikrer at virksomheten ikke trenger å overholde regler, og forskrifter håndhevet av forskjellige regioner, for eksempel GDPR (General Data Protection Regulation).

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.

  1. Å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 oppdatering
apt-get install nginx
  1. Skriv inn følgende kommando for å sikre at http_geoip-modulen er installert.
nginx -V

  1. 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 libgeoip1

Alternativ 2

cd / usr / del / GeoIP
wget -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
  1. 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.
nano / etc / nginx / nginx.konf
geoip_country / usr / share / GeoIP / GeoIP.dat;
kart $ geoip_country_code $ allow_country
standard ja;
LK nei;
  1. Å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.
nano / etc / nginx / nettsteder-tilgjengelig / standard
hvis ($ allow_country = nei)
retur 444;
  1. 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.
systemctl start nginx på nytt

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.

Git Installer GitLab på Ubuntu 20.04
Installer GitLab på Ubuntu 20.04
Gitlab er plattformen for kodeverten som Github og Bitbucket. Disse tre er de mest populære løsningene for å være vert for dine egne Git-arkiver. De h...
Git GitHub Markdown Cheatsheet
GitHub Markdown Cheatsheet
Når du legger ut et prosjekt på GitHub, vil du sette en README.md på nettstedet for å forklare hva du prøver å oppnå. Ved første øyekast er formatet f...
Git Slik installerer og konfigurerer du Git på Ubuntu 20.04
Slik installerer og konfigurerer du Git på Ubuntu 20.04
Git er et åpen kildekode og fritt tilgjengelig distribuert versjonskontrollsystem som kan håndtere små til store prosjekter raskt og effektivt. Den er...