Implementazione
Anche se ci sono molti modi per implementare la soluzione nel sistema, questa guida mostra il modo più semplice per registrarla con il minimo sforzo.
- Ovviamente, Nginx deve essere installato nel sistema prima di iniziare i passaggi in questa guida. Tuttavia, avere Nginx installato non è sufficiente, poiché richiede anche l'installazione di geo_ip_module. Maxmind era solito rilasciare il proprio database in formato dat, ma da qualche tempo è stato rilasciato in formato mmdbd. Questo fa sì che Nginx richieda un nuovo geo_ip_module chiamato ngx_http_geoip2_module. Tuttavia, non è necessario poiché il vecchio database di dati è ancora sufficiente. Ad ogni modo, se nginx non è installato configuralo con i seguenti due comandi.
apt-get install nginx
- Digita il seguente comando per assicurarti che il modulo http_geoip sia installato.
- Esistono diversi modi per acquisire/creare il database che contiene gli indirizzi IP e i rispettivi nomi di paesi e città. Installa il database geo_ip con i seguenti comandi. L'utilizzo di questo metodo semplifica l'installazione del database geo_Ip nel sistema. Tuttavia, il modo più ideale è scaricare una nuova copia man mano che vengono aggiornate con le informazioni più recenti. Quindi, usa una delle tre opzioni fornite di seguito. La prima opzione è sufficiente per qualsiasi utente medio, il 2nd l'opzione è ottenere l'ultimo database di maxmind, la terza opzione converte il database mmdb nel rispettivo formato di file dat.
Richiede tempo e risorse e quindi non è consigliato per server deboli. Tuttavia, se è ancora necessario aggiornare il database, utilizzare l'opzione 2. Risparmia tempo e denaro nella conversione del file, ma la sicurezza non può essere garantita poiché viene convertito da qualcun altro, non da una parte ufficiale. L'opzione 3 richiede 3 pacchetti pip, setuptools, ipaddr, dcryptit. E usa Python 2 per elaborare lo script. L'ultima riga converte l'archivio zip in .dat file. Anche se è stato menzionato la conversione del formato file mmdb in .dat, qui in realtà converte un file CSV in a .dat, e quindi richiede geoname2fips.csv che viene fornito con il pacchetto di file di conversione.
opzione 1
apt-get install geoip-database libgeoip1opzione 2
cd /usr/share/GeoIPwget -o maxmind.data.gz https://bit.ly/2Gh3gTZ
gunzip maxmind.data.gz
Opzione 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/condividi/
mkdir GeoIP/
cd /usr/share/GeoIP/
wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.cerniera lampo
pyton /home/geolite2legacy/geolite2legacy.py -i /usr/share/GeoIP/GeoLite2-Country-CSV.zip -f
/home/geolite2legacy/geoname2fips.csv -o /usr/share/GeoIP/GeoLite2-Country.data
- Configura il file di configurazione di Nginx come segue. Digita il comando nella prima riga nel terminale Linux come al solito e copia il resto delle righe su nginx.conf file. Assicurati che il nome menzionato in /usr/share/GeoIP/GeoIP.data corrisponde al file dat memorizzato nella cartella usr/share/GeoIP. Anche se nell'esempio seguente viene specificato un solo paese, è possibile specificare più codici paese come nell'esempio fornito con una riga per codice paese. L'elenco dei codici paese disponibile per i paesi può essere situato in questa posizione. http://www.maxmind.com/app/iso3166.
geoip_country /usr/share/GeoIP/GeoIP.data;
mappa $geoip_country_code $allowed_country
predefinito sì;
LK no;
- Apri il file predefinito tramite qualsiasi editor di testo (è preferibile nano in quanto è abbastanza facile da modificare con esso), quindi aggiungi il contenuto dal 2nd riga in mezzo a qualsiasi punto del blocco di posizione nel file predefinito. Il codice funziona in questo modo, quando un visitatore effettua una richiesta al server web, nginx recupera i loro indirizzi IP e li abbina ai suoi record per trovare il rispettivo codice del paese, se il paese menzionato nel blocco della mappa corrisponde, il no viene assegnato al $allowed_country variabile, e quindi il controllo di $allowed_country consente di manipolare la risposta. In questa guida si usa no, e quindi al visitatore è negato di vedere il contenuto. Se ci sono più domini come .come, .lk, o nucuta.com, o nucuta.net aggiungi il codice dalla riga 3 a ciascun "dominio".anche il file conf. Se nginx è configurato correttamente, il file del rispettivo dominio si trova nella cartella dei siti disponibili.
if ($allowed_country = no)
ritorno 444;
- Riavvia il server nginx con il seguente comando. In seguito, l'accesso al server Web da qualsiasi dominio dello Sri Lanka (LK) fa sì che il server Web non restituisca nulla come mostrato nelle schermate seguenti. 444 in nginx non rappresenta nulla. Qualsiasi altro codice come 302, 301, 404 può essere utilizzato anche qui. Se vengono specificati 302.301, deve essere specificato anche un URL per reindirizzare il visitatore.
Conclusione
Il blocco dei visitatori in base alla loro area geografica è fondamentale per il funzionamento di alcune aziende a causa di varie norme e regolamenti regionali. Nginx soddisfa tali esigenze con il suo modulo geo_ip. Utilizza i database maxmind per trovare il paese in base all'indirizzo IP del visitatore. Il database funziona sia con IPv4 che con ipv6. Poiché maxmind ha interrotto il suo formato di database di dati legacy, l'unico modo per utilizzare i propri dati è convertire il nuovo formato di file in file dat o utilizzarne uno già convertito o utilizzare un modulo di terze parti per Nginx per supportare il formato di file mmdb. Lo script Python fornito qui è l'ideale per la conversione anche se ci vuole un po' di tempo per vedere il risultato. Maxmind garantisce una precisione superiore al 99% nel trovare il paese in base all'IP; quindi è uno strumento indispensabile per qualsiasi attività commerciale.