Nginx

NGINX-blok op basis van geografische locatie

NGINX-blok op basis van geografische locatie
Nginx is een hoogwaardige, lichtgewicht, open source webserver die gratis beschikbaar is voor het publiek. Het heeft een enorm aantal waardevolle functies in vergelijking met andere lichtgewicht servers. Een van die functies is de geoip_module, die wordt gebruikt om de geografische locatie te identificeren waar de bezoeker vandaan komt. Standaard gebruikt het in combinatie met gegevens van maxmind om de geografische locatie van de bezoeker te achterhalen. Het voordeel van het identificeren van de geografische locatie is om verschillende beleidsregels af te dwingen voor verschillende geografische locaties, bijvoorbeeld als een bedrijf alleen beschikbaar is voor landen in Noord-Amerika, met geoip_module kan het alle andere bezoekers uit andere regio's blokkeren. Dit zorgt ervoor dat het bedrijf zich niet hoeft te houden aan regels en voorschriften die door verschillende regio's worden afgedwongen, zoals de AVG (Algemene Verordening Gegevensbescherming).

Implementatie

Hoewel er veel manieren zijn om de oplossing in het systeem te implementeren, toont deze gids de eenvoudigste manier om deze met minimale inspanning in te schrijven.

  1. Het is duidelijk dat Nginx in het systeem moet zijn geïnstalleerd voordat de stappen in deze handleiding worden gestart. Het is echter niet voldoende om Nginx te installeren, omdat het ook vereist dat geo_ip_module ook wordt geïnstalleerd. Maxmind bracht vroeger hun database in dat-formaat uit, maar sinds een tijdje is het in mmdb-formaat uitgebracht. Dit zorgt ervoor dat Nginx een nieuwe geo_ip_module nodig heeft met de naam ngx_http_geoip2_module. Het is echter niet vereist omdat de oude dat-database nog steeds voldoende is. Hoe dan ook, als nginx niet is geïnstalleerd, stel het dan in met de volgende twee opdrachten:.
apt-get update
apt-get install nginx
  1. Typ de volgende opdracht om ervoor te zorgen dat de http_geoip-module is geïnstalleerd.
nginx -V

  1. Er zijn meerdere manieren om de database te verkrijgen/bouwen die IP-adressen bevat, en hun respectievelijke land- en plaatsnamen. Installeer de geo_ip-database met de volgende opdrachten:. Het gebruik van deze methode maakt het gemakkelijk om de geo_Ip-database in het systeem te installeren. De meest ideale manier is echter om een ​​nieuwe kopie te downloaden, aangezien deze is bijgewerkt met de nieuwste informatie. Gebruik dus een van de drie onderstaande opties:. De eerste optie is genoeg voor elke gemiddelde gebruiker, de 2nd optie is om de nieuwste database van maxmind te krijgen, de derde optie converteert de mmdb-database naar het respectieve dat-bestandsformaat.
    Het kost veel tijd en middelen, en wordt daarom niet aanbevolen voor zwakke servers. Als er echter nog steeds een bijgewerkte database nodig is, gebruik dan de optie 2. Het bespaart tijd en geld bij het converteren van het bestand, maar de veiligheid kan niet worden gegarandeerd omdat het door iemand anders is geconverteerd, niet door een officiële partij. De optie 3 vereist 3 pip-pakketten, setuptools, ipaddr, dcryptit. En het gebruikt python 2 om het script te verwerken. De laatste regel converteert het zip-archief naar .dat-bestand. Ook al wordt er gesproken over de conversie van het mmdb-bestandsformaat naar .dat, hier converteert het eigenlijk een CSV-bestand naar a .dat-bestandsformaat, en daarom is geoname2fips nodig.csv-bestand dat bij de conversiebestandsbundel wordt geleverd.

Optie 1

apt-get install geoip-database libgeoip1

Optie 2

cd /usr/share/GeoIP
wget -o maxmind.dat.gz https://bit.ly/2Gh3gTZ
gunzip maxmind.dat.gz

Optie 3

cd /home/
mkdir geolite2legacy/
git kloon https://github.com/sherpya/geolite2legacy
apt-get install python
apt-get install python-pip
pip install setuptools
pip ipadr installeren
pip installeer dcryptit
cd /usr/share/
mkdir GeoIP/
cd /usr/share/GeoIP/
wget https://geoliet.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
  1. Configureer het Nginx-configuratiebestand als volgt:. Typ de opdracht zoals gewoonlijk in de eerste regel in de Linux-terminal en kopieer de rest van de regels naar de nginx.conf bestand. Zorg ervoor dat de naam vermeld in /usr/share/GeoIP/GeoIP.dat komt overeen met het dat-bestand dat is opgeslagen in de map usr/share/GeoIP. Hoewel het in het volgende voorbeeld slechts één land specificeert, kunnen meerdere landcodes worden opgegeven als het gegeven voorbeeld met één regel per landcode. De lijst met beschikbare landencodes voor landen vindt u op deze locatie. http://www.maxmind.com/app/iso3166.
nano /etc/nginx/nginx.conf
geoip_country /usr/share/GeoIP/GeoIP.dat;
kaart $geoip_country_code $allowed_country
standaard ja;
LK nee;
  1. Open het standaardbestand via een teksteditor (nano heeft de voorkeur omdat het vrij eenvoudig is om ermee te bewerken), voeg vervolgens de inhoud toe sinds 2nd regel naar tussen ergens in locatieblok in het standaardbestand. De code werkt als volgt: wanneer een bezoeker een verzoek doet aan de webserver, haalt nginx hun IP-adressen op en matcht met zijn records om de respectieve landcode te vinden, als het land dat in het kaartblok wordt vermeld overeenkomt, wordt het nr toegewezen aan de $allowed_country variabele, en daarmee het controleren van $allowed_country maakt het mogelijk om het antwoord te manipuleren. In deze handleiding wordt nee gebruikt, waardoor de bezoeker de inhoud niet kan zien. Als er meerdere domeinen zijn, zoals .com, .lk, of nucuta.com, of nucuta.net voeg de code sinds regel 3 toe aan elk "domein".conf bestand ook. Als nginx goed is geconfigureerd, bevindt het bestand naar het respectieve domein zich in de map 'sites-available'.
nano /etc/nginx/sites-available/default
if ($ toegestaan_land = nee)
retour 444;
  1. Start de nginx-server opnieuw met de volgende opdracht:. Hierna zal het benaderen van de webserver vanuit een willekeurig Sri Lankaans (LK) domein ervoor zorgen dat de webserver niets retourneert, zoals te zien is in de volgende schermafbeeldingen. 444 in nginx staat voor niets. Elke andere code zoals 302, 301, 404 kan hier ook worden gebruikt. Als 302.301 is opgegeven, moet ook een URL worden opgegeven om de bezoeker om te leiden.
systemctl herstart nginx

Conclusie

Het blokkeren van bezoekers op basis van hun geografische ligging is van cruciaal belang voor het functioneren van sommige bedrijven vanwege verschillende regionale regels en voorschriften. Nginx speelt in op dergelijke behoeften met zijn geo_ip-module. Het gebruikt maxmind-databases om het land te vinden op het ip-adres van de bezoeker. De database werkt met zowel Ipv4 als ipv6. Sinds maxmind hun legacy dat-databaseformaat heeft stopgezet, is de enige manier om gebruik te maken van hun gegevens het nieuwe bestandsformaat naar dat-bestand te converteren of een reeds geconverteerd bestand te gebruiken of een externe module voor Nginx te gebruiken om het mmdb-bestandsformaat te ondersteunen. Het python-script dat hier wordt geboden, is ideaal voor conversie, ook al duurt het even voordat het resultaat te zien is. Maxmin garandeert meer dan 99% nauwkeurigheid bij het vinden van het land op basis van het IP; daarom is het een onmisbare tool voor elk bedrijf.

5 beste arcade-spellen voor Linux
Tegenwoordig zijn computers serieuze machines die worden gebruikt om te gamen. Als je de nieuwe hoge score niet kunt halen, weet je wat ik bedoel. In ...
Strijd om Wesnoth 1.13.6 Ontwikkeling vrijgegeven
Strijd om Wesnoth 1.13.6 die vorige maand werd uitgebracht, is de zesde ontwikkelingsrelease in de 1.13.x-serie en het levert een aantal verbeteringen...
Hoe League Of Legends op Ubuntu 14 te installeren.04
Als je fan bent van League of Legends, dan is dit een kans voor jou om League of Legends te testen. Merk op dat LOL wordt ondersteund op PlayOnLinux a...