mirror of
https://github.com/nginx/nginx.git
synced 2026-10-24 22:57:43 -05:00
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>
217 lines
4.3 KiB
Plaintext
217 lines
4.3 KiB
Plaintext
|
|
# Copyright (C) Igor Sysoev
|
|
# Copyright (C) Nginx, Inc.
|
|
|
|
|
|
GEOIP=NO
|
|
|
|
|
|
ngx_feature="GeoIP library"
|
|
ngx_feature_name=NGX_HAVE_GEOIP
|
|
ngx_feature_run=no
|
|
ngx_feature_incs="#include <GeoIP.h>"
|
|
ngx_feature_path=
|
|
ngx_feature_libs="-lGeoIP"
|
|
ngx_feature_test="GeoIP_open(NULL, 0)"
|
|
. auto/feature
|
|
|
|
|
|
if [ $ngx_found = no ]; then
|
|
|
|
# FreeBSD port
|
|
|
|
ngx_feature="GeoIP 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 -lGeoIP"
|
|
else
|
|
ngx_feature_libs="-L/usr/local/lib -lGeoIP"
|
|
fi
|
|
|
|
. auto/feature
|
|
fi
|
|
|
|
|
|
if [ $ngx_found = no ]; then
|
|
|
|
# NetBSD port
|
|
|
|
ngx_feature="GeoIP 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 -lGeoIP"
|
|
else
|
|
ngx_feature_libs="-L/usr/pkg/lib -lGeoIP"
|
|
fi
|
|
|
|
. auto/feature
|
|
fi
|
|
|
|
|
|
if [ $ngx_found = no ]; then
|
|
|
|
# MacPorts
|
|
|
|
ngx_feature="GeoIP 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 -lGeoIP"
|
|
else
|
|
ngx_feature_libs="-L/opt/local/lib -lGeoIP"
|
|
fi
|
|
|
|
. auto/feature
|
|
fi
|
|
|
|
|
|
if [ $ngx_found = no ]; then
|
|
|
|
# Homebrew on Apple Silicon
|
|
|
|
ngx_feature="GeoIP 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 -lGeoIP"
|
|
else
|
|
ngx_feature_libs="-L/opt/homebrew/lib -lGeoIP"
|
|
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_feature_libs
|
|
|
|
ngx_feature="GeoIP IPv6 support"
|
|
ngx_feature_name="NGX_HAVE_GEOIP_V6"
|
|
ngx_feature_run=no
|
|
ngx_feature_incs="#include <stdio.h>
|
|
#include <GeoIP.h>"
|
|
#ngx_feature_path=
|
|
#ngx_feature_libs=
|
|
ngx_feature_test="printf(\"%d\", GEOIP_CITY_EDITION_REV0_V6);"
|
|
. auto/feature
|
|
|
|
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 MaxMind DB library
|
|
or the legacy GeoIP library.
|
|
You can either do not enable the module or install the library.
|
|
|
|
END
|
|
|
|
exit 1
|
|
fi
|