Skip to content

Instantly share code, notes, and snippets.

@kenjij
Last active April 20, 2025 07:13
Show Gist options
  • Save kenjij/daadbc6c284fcd6c2b2d to your computer and use it in GitHub Desktop.
Save kenjij/daadbc6c284fcd6c2b2d to your computer and use it in GitHub Desktop.
Downloading free MaxMind GeoIP file, use with NGINX
# Download the legacy format for NGINX compatibility
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
# Unzip
gunzip Geo*.gz
# Copy to /usr/share/GeoIP/
cp Geo*.dat /usr/share/GeoIP/
# Use GeoIP database
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
geoip_city /usr/share/GeoIP/GeoLiteCity.dat;
}
# Create mapping, then block
http {
map $geoip_country_code $allowed_country {
default yes;
CN no;
RU no;
}
}
server {
if ($allowed_country = no) {
return 444;
}
}
# Insert headers (reverse proxy case)
server {
proxy_set_header X_COUNTRY_CODE $geoip_country_code;
proxy_set_header X_CITY_COUNTRY_CODE $geoip_city_country_code;
proxy_set_header X_REGION $geoip_region;
proxy_set_header X_CITY $geoip_city;
proxy_set_header X_POSTAL_CODE $geoip_postal_code;
}
@B1gG
Copy link

B1gG commented Mar 6, 2021

Here https://github.com/sherpya/geolite2legacy is a tool to translate the new to the old format used by nginx,
and in the following link, there is a guy that makes it readily available https://www.miyuru.lk/geoiplegacy.
Thumbs up to https://twitter.com/miyurulk

@kevin25
Copy link

kevin25 commented Nov 2, 2022

Is there any way to detect the users using vpn/vps/hosting ips and block them?

@andymark-by
Copy link

Thanks for this note, you are saved my time :)

@ciertou
Copy link

ciertou commented Apr 20, 2025

thanks for this guys, really appreciated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment