Implementácia
Aj keď existuje veľa spôsobov, ako implementovať riešenie v systéme, táto príručka ukazuje najjednoduchší spôsob, ako ho zaregistrovať s minimálnym úsilím.
- Je zrejmé, že Nginx musí byť v systéme nainštalovaný pred vykonaním krokov v tejto príručke. Inštalácia Nginx však nestačí, pretože si vyžaduje aj inštaláciu geo_ip_module. Maxmind zvykol vydávať svoju databázu vo formáte dat, ale od doby, kedy je vydávaná vo formáte mmdb. Vďaka tomu musí Nginx vyžadovať nový modul geo_ip_module s názvom ngx_http_geoip2_module. Nie je to však potrebné, pretože stará databáza údajov je stále dostatočná. Ak nginx nie je nainštalovaný, nastavte ho pomocou nasledujúcich dvoch príkazov.
apt-get nainštalovať nginx
- Zadaním nasledujúceho príkazu sa ubezpečte, že je nainštalovaný modul http_geoip.
- Existuje niekoľko spôsobov, ako získať / vytvoriť databázu obsahujúcu adresy IP a názvy ich príslušných krajín a miest. Nainštalujte databázu geo_ip pomocou nasledujúcich príkazov. Použitie tejto metódy uľahčuje inštaláciu databázy geo_Ip do systému. Najideálnejším spôsobom je však stiahnutie novej kópie, ktorá je aktualizovaná najnovšími informáciami. Použite teda jednu z troch možností uvedených nižšie. Prvá možnosť stačí pre každého priemerného používateľa, druhánd možnosťou je získať najnovšiu databázu maxmind, treťou možnosťou sa prevádza databáza mmdb na jej príslušný formát dátového súboru.
Je to čas a zdroje náročné, a preto sa to neodporúča pre slabé servery. Ak je však stále potrebná aktualizovaná databáza, použite možnosť 2. Šetrí to čas a peniaze pri prevode súboru, ale bezpečnosť nie je možné zaručiť, pretože ho prevádza niekto iný, nie žiadna oficiálna strana. Možnosť 3 vyžaduje 3 balíčky pip, setuptools, ipaddr, dcryptit. A na spracovanie skriptu používa python 2. Posledný riadok prevádza archív zip na .dátový súbor. Aj keď sa hovorí o prevode formátu súboru mmdb na .DAT, tu skutočne prevádza súbor CSV na .formát dátového súboru, a preto vyžaduje geoname2fips.súbor CSV, ktorý sa dodáva s balíkom súborov na prevod.
možnosť 1
apt-get nainštalovať geoip-databázu libgeoip1Možnosť 2
cd / usr / share / GeoIPwget -o maxmind.dat.gz https: // bit.ly / 2Gh3gTZ
gunzip maxmind.dat.gz
Možnosť 3
cd / domov /mkdir geolite2legacy /
git klon https: // github.com / sherpya / geolite2legacy
apt-get nainštalovať python
apt-get nainštalovať python-pip
pip nainštalovať setuptools
pip nainštalovať ipaddr
pip nainštaluj dcryptit
cd / usr / share /
mkdir GeoIP /
cd / usr / share / GeoIP /
wget https: // geolit.maxmind.com / download / geoip / databáza / GeoLite2-Country-CSV.PSČ
pyton / home / geolite2legacy / geolite2legacy.py -i / usr / share / GeoIP / GeoLite2-Country-CSV.zips -f
/ home / geolite2legacy / geoname2fips.csv -o / usr / share / GeoIP / GeoLite2-Country.dat
- Konfigurujte konfiguračný súbor Nginx nasledovne. Zadajte príkaz do prvého riadku v termináli Linux ako obvykle a zvyšok riadkov skopírujte do nginx.conf súbor. Skontrolujte meno uvedené v / usr / share / GeoIP / GeoIP.dat sa zhoduje s dátovým súborom uloženým v priečinku usr / share / GeoIP. Aj keď v nasledujúcom príklade určuje iba jednu krajinu, je možné zadať viac kódov krajín ako daný príklad s jedným riadkom na kód krajiny. Dostupný zoznam kódov krajín pre jednotlivé krajiny sa nachádza na tomto mieste. http: // www.maxmind.com / app / iso3166.
geoip_country / usr / share / GeoIP / GeoIP.dat;
mapa $ geoip_country_code $ allow_country
predvolené áno;
LK č;
- Otvorte predvolený súbor pomocou ľubovoľného textového editora (uprednostňuje sa nano, pretože je možné s ním ľahko upravovať), potom pridajte obsah od 2nd riadok medzi nimi kdekoľvek v bloku umiestnenia v predvolenom súbore. Tento kód funguje tak, že keď návštevník zadá požiadavku na webový server, nginx načíta ich IP adresy a porovná ich záznamy s nájdením kódu príslušnej krajiny, ak sa krajina uvedená v bloku mapy zhoduje, k Premenná $ allow_country, a tým kontrola $ allow_country umožňuje manipulovať s odpoveďou. V tejto príručke nepoužíva nijaké slovo, a preto je návštevníkovi zamedzené vidieť obsah. Ak existuje viac domén ako .com, .lk, alebo nucuta.com, alebo nucuta.net pridať kód od riadku 3 do každej „domény“.conf súbor tiež. Ak je nginx nakonfigurovaný správne, súbor do príslušnej domény sa nachádza v priečinku sites-available.
if ($ allow_country = no)
návrat 444;
- Reštartujte server nginx pomocou nasledujúceho príkazu. Ďalej prístup na webový server z ľubovoľnej domény Srí Lanky (LK) spôsobí, že webový server nevráti nič, ako je vidieť na nasledujúcich snímkach obrazovky. 444 v nginx nepredstavuje nič. Namiesto toho tu môžete použiť akýkoľvek iný kód, napríklad 302, 301, 404. Ak je zadaných 302 301, mala by sa uviesť aj adresa URL na presmerovanie návštevníka.
Záver
Blokovanie návštevníkov na základe ich zemepisnej polohy je pre fungovanie niektorých firiem kritické z dôvodu rôznych regionálnych pravidiel a predpisov. Nginx uspokojuje tieto potreby svojim modulom geo_ip. Používa databázy maxmind na nájdenie krajiny podľa ip adresy návštevníka. Databáza pracuje s protokolom Ipv4 aj s ipv6. Pretože spoločnosť maxmind ukončila svoj starší formát databázy údajov, jediný spôsob, ako využiť ich údaje, je buď prevod nového formátu súboru na súbor údajov, alebo použitie už prevedeného súboru alebo použitie modulu tretej strany pre Nginx na podporu formátu súboru mmdb. Pythonový skript, ktorý je tu uvedený, je ideálny na konverziu, aj keď videnie výsledku chvíľu trvá. Maxmind zaručuje viac ako 99% presnosť pri vyhľadávaní krajiny na základe IP; preto je nevyhnutnosťou nástroj pre akékoľvek podnikanie.