mirror of
https://github.com/nginx/nginx.git
synced 2026-10-24 14:47:45 -05:00
GeoIP: support for the MaxMind DB (MMDB) databases
The MaxMind DB format is now recognized, with the fallback to the
legacy format (reached End-of-Life in May 2022). Migration requires
switching to MMDB database files:
geoip_country /usr/share/GeoIP/GeoLite2-Country.mmdb;
geoip_city /usr/share/GeoIP/GeoLite2-City.mmdb;
geoip_org /usr/share/GeoIP/GeoLite2-ASN.mmdb;
Either libmaxminddb or libGeoIP is sufficient to build the modules;
configure fails if neither is found.
Notes on the MMDB lookups:
*) $geoip_country_code3 and $geoip_city_country_code3 are converted from
the alpha-2 codes with a compiled-in ISO 3166-1 table, as the MMDB
databases provide alpha-2 codes only.
*) $geoip_org looks up "autonomous_system_organization", "isp",
"organization", and "domain" in turn, to match the legacy ASNum, ISP,
Org, and Domain database editions.
*) $geoip_area_code has no MMDB counterpart and is never found.
*) $geoip_region and $geoip_region_name come from subdivisions[0], and
thus may differ in value from the legacy ones.
*) $geoip_dma_code comes from location.metro_code, which is deprecated
by MaxMind and may be absent.
Co-authored-by: Nitin Swami <n.swami@f5.com>
This commit is contained in:
1 parent
d30f68d82a
commit
2b5c2b605b
3 files changed
+1905
-61
No files matched your search
+105
-3
@@ -3,8 +3,11 @@
|
||||
# Copyright (C) Nginx, Inc.
|
||||
|
||||
|
||||
GEOIP=NO
|
||||
|
||||
|
||||
ngx_feature="GeoIP library"
|
||||
ngx_feature_name=
|
||||
ngx_feature_name=NGX_HAVE_GEOIP
|
||||
ngx_feature_run=no
|
||||
ngx_feature_incs="#include <GeoIP.h>"
|
||||
ngx_feature_path=
|
||||
@@ -83,6 +86,8 @@ fi
|
||||
|
||||
if [ $ngx_found = yes ]; then
|
||||
|
||||
GEOIP=YES
|
||||
|
||||
CORE_INCS="$CORE_INCS $ngx_feature_path"
|
||||
|
||||
if [ $USE_GEOIP = YES ]; then
|
||||
@@ -101,11 +106,108 @@ if [ $ngx_found = yes ]; then
|
||||
ngx_feature_test="printf(\"%d\", GEOIP_CITY_EDITION_REV0_V6);"
|
||||
. auto/feature
|
||||
|
||||
else
|
||||
fi
|
||||
|
||||
|
||||
ngx_feature="MaxMind DB library"
|
||||
ngx_feature_name=NGX_HAVE_MAXMINDDB
|
||||
ngx_feature_run=no
|
||||
ngx_feature_incs="#include <maxminddb.h>"
|
||||
ngx_feature_path=
|
||||
ngx_feature_libs="-lmaxminddb"
|
||||
ngx_feature_test="MMDB_s mmdb; MMDB_open(NULL, MMDB_MODE_MMAP, &mmdb)"
|
||||
. auto/feature
|
||||
|
||||
|
||||
if [ $ngx_found = no ]; then
|
||||
|
||||
# FreeBSD port
|
||||
|
||||
ngx_feature="MaxMind DB library in /usr/local/"
|
||||
ngx_feature_path="/usr/local/include"
|
||||
|
||||
if [ $NGX_RPATH = YES ]; then
|
||||
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lmaxminddb"
|
||||
else
|
||||
ngx_feature_libs="-L/usr/local/lib -lmaxminddb"
|
||||
fi
|
||||
|
||||
. auto/feature
|
||||
fi
|
||||
|
||||
|
||||
if [ $ngx_found = no ]; then
|
||||
|
||||
# NetBSD port
|
||||
|
||||
ngx_feature="MaxMind DB library in /usr/pkg/"
|
||||
ngx_feature_path="/usr/pkg/include"
|
||||
|
||||
if [ $NGX_RPATH = YES ]; then
|
||||
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lmaxminddb"
|
||||
else
|
||||
ngx_feature_libs="-L/usr/pkg/lib -lmaxminddb"
|
||||
fi
|
||||
|
||||
. auto/feature
|
||||
fi
|
||||
|
||||
|
||||
if [ $ngx_found = no ]; then
|
||||
|
||||
# MacPorts
|
||||
|
||||
ngx_feature="MaxMind DB library in /opt/local/"
|
||||
ngx_feature_path="/opt/local/include"
|
||||
|
||||
if [ $NGX_RPATH = YES ]; then
|
||||
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lmaxminddb"
|
||||
else
|
||||
ngx_feature_libs="-L/opt/local/lib -lmaxminddb"
|
||||
fi
|
||||
|
||||
. auto/feature
|
||||
fi
|
||||
|
||||
|
||||
if [ $ngx_found = no ]; then
|
||||
|
||||
# Homebrew on Apple Silicon
|
||||
|
||||
ngx_feature="MaxMind DB library in /opt/homebrew/"
|
||||
ngx_feature_path="/opt/homebrew/include"
|
||||
|
||||
if [ $NGX_RPATH = YES ]; then
|
||||
ngx_feature_libs="-R/opt/homebrew/lib -L/opt/homebrew/lib -lmaxminddb"
|
||||
else
|
||||
ngx_feature_libs="-L/opt/homebrew/lib -lmaxminddb"
|
||||
fi
|
||||
|
||||
. auto/feature
|
||||
fi
|
||||
|
||||
|
||||
if [ $ngx_found = yes ]; then
|
||||
|
||||
GEOIP=YES
|
||||
|
||||
CORE_INCS="$CORE_INCS $ngx_feature_path"
|
||||
|
||||
if [ $USE_GEOIP = YES ]; then
|
||||
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||
fi
|
||||
|
||||
NGX_LIB_GEOIP="$NGX_LIB_GEOIP $ngx_feature_libs"
|
||||
|
||||
fi
|
||||
|
||||
|
||||
if [ $GEOIP != YES ]; then
|
||||
|
||||
cat << END
|
||||
|
||||
$0: error: the GeoIP module requires the GeoIP library.
|
||||
$0: error: the GeoIP module requires the MaxMind DB library
|
||||
or the legacy GeoIP library.
|
||||
You can either do not enable the module or install the library.
|
||||
|
||||
END
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user