Nginx bloquear peticiones segun ubicacion geografica con GeoIP
hola a todos hoy vemos algo que estaba probando con nginx en un servidor asi que les comparto este experimento.
bueno para que funcione tienes que tener un servidor con nginx ya instalado.
mas informacion esta en el siguiente enlace que les dejo aca click
bueno ahora para ver un ejemplo rapido hacemos lo siguiente.
El módulo GeoIP (ngx_http_geoip_module) necesita unas bases de datos precompiladas de MaxMind que contiene los rangos de IPs por países y ciudades. Para utilizarlas, primero tenemos que descargar las BBDD (bases de datos) en la carpeta /etc/nginx/geoip:
mkdir /etc/nginx/geoip
cd /etc/nginx/geoip
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoIP.dat.gz
gunzip GeoLiteCity.dat.gz
bueno ahora lo que hacemos es agregar unas lineas de geoip en nginx.conf
http {
#GeoIP
geoip_country /etc/nginx/geoip/GeoIP.dat;
geoip_city /etc/nginx/geoip/GeoLiteCity.dat;
}
y ahora definimos paises o ciudades a bloquear
http {
map $geoip_country_code $paises_permitidos {
default no;
BO yes;
# Si quereis añadir mas paises, los podeis añadir aqui
}
De esta manera, solo estariamos permitiendo el acceso a las IPs de nuestro pais.
$geoip_country_code → es una variable del modulo GeoIP, nos devuelve un codigo de pais de dos letras, por ejemplo, “RU”, “US”
$paises_permitidos → es la variable que estamos creando con los paises permitidos
Si quieres bloquear por ciudades tendrias que utilizar $geoip_city en vez de $geoip_country_code ver la siguiente documentacion
bueno hay muchas mas opciones asi que solo comparto esta parte hasta otro post !
Comentarios: