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>
IPv6 now compiled-in automatically if support is found. If there is a need
to disable it for some reason, --with-cc-opt="-DNGX_HAVE_INET6=0" can be used
for this.
The auto/module script is extended to understand ngx_module_link=DYNAMIC.
When set, it links the module as a shared object rather than statically
into nginx binary. The module can later be loaded using the "load_module"
directive.
New auto/module parameter ngx_module_order allows to define module loading
order in complex cases. By default the order is set based on ngx_module_type.
3rd party modules can be compiled dynamically using the --add-dynamic-module
configure option, which will preset ngx_module_link to "DYNAMIC" before
calling the module config script.
Win32 support is rudimentary, and only works when using MinGW gcc (which
is able to handle exports/imports automatically).
In collaboration with Ruslan Ermilov.