Filtraggio del traffico in Nginx con GeoIP
Guida passo dopo passo per limitare l'accesso al sito per paese utilizzando il modulo GeoIP in Nginx.
Quando si lavora con Nginx su un VPS o un server dedicato, potrebbe essere necessario limitare l'accesso al sito per paese. È possibile farlo tramite il modulo Nginx GeoIP.
Installare i pacchetti
Per installare il modulo GeoIP sul server, esegui i seguenti comandi in base al sistema operativo in uso.
Debian/Ubuntu
sudo apt-get install nginx-module-geoip
CentOS
yum install nginx-module-geoip
Se la tua versione di nginx non dispone di /etc/nginx/modules-enabled, il modulo potrebbe non essere caricato automaticamente.
In tal caso, aggiungi le seguenti righe all'inizio di /etc/nginx/nginx.conf (al di fuori dei blocchi http, server ed events):
load_module modules/ngx_http_geoip_module.so;
load_module modules/ngx_stream_geoip_module.so;
Quindi esegui:
nginx -s reload
Aggiornare il database GeoIP
Per aggiornare il database GeoIP, esegui i seguenti comandi:
mv /usr/share/GeoIP/GeoIP.dat /usr/share/GeoIP/GeoIP.dat_bak
cd /usr/share/GeoIP/
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip GeoIP.dat.gz
Verificare la build di Nginx con il supporto al modulo GeoIP
Dopo aver aggiornato il database GeoIP, verifica che Nginx sia stato compilato con l'opzione --with-http_geoip_module. Per farlo, usa il seguente comando:
nginx -V
Se Nginx non è stato compilato con l'opzione richiesta, sarà necessario eseguire la compilazione del modulo Nginx.
I nostri prodotti e servizi
Configurare Nginx per limitare l'accesso per paese
Nella directory dei file di configurazione di Nginx, crea un file chiamato block.map.include con il seguente contenuto:
geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $allowed_country {
default yes;
CN no;
VN no;
TW no;
}
In questo esempio, l'accesso al sito è bloccato per gli utenti provenienti da Cina, Vietnam e Taiwan.
Per consentire l'accesso solo agli utenti di determinati paesi, modifica la configurazione come segue:
geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $allowed_country {
default no;
RU yes;
UA yes;
}
In questo esempio, il sito sarà accessibile solo agli utenti provenienti da Russia e Ucraina.
Modificare la configurazione di Nginx
Nel file /etc/nginx/nginx.conf, aggiungi la seguente riga nella sezione http:
include include/block.map.include;
Quindi, nella sezione server della configurazione del tuo host, aggiungi il seguente blocco:
if ($allowed_country = no) {
return 404;
}
Applica le modifiche riavviando Nginx:
nginx -s reload
Attenzione
MaxMind non supporta più il vecchio formato di database .dat e ha eliminato la possibilità di scaricarlo liberamente. L'accesso ai file è ora disponibile solo previa autenticazione e acquisto di una licenza. Il nuovo formato di database .mmdb è attualmente in uso.
Aiuto
Hai domande o ti serve una mano? Scrivici tramite il sistema di ticket — siamo sempre qui per aiutarti!