Skip to content

Instantly share code, notes, and snippets.

@kenjij
Last active February 14, 2024 22:32
Show Gist options
  • Star 26 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • 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;
}
@mfaerevaag
Copy link

Maxmind has discontinued their GeoIP database, in favor of the v2, which does not yet work with out-of-the-box nginx.

Therefore the above links does not work. Anyone have a link that works?

@kissmyarseuwimps
Copy link

@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 :)

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