Zum Inhalt

geoip2: NGINX GeoIP2-Modul

Installation

Sie können dieses Modul in jeder RHEL-basierten Distribution installieren, einschließlich, aber nicht beschränkt auf:

  • RedHat Enterprise Linux 7, 8, 9 und 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 und Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-geoip2
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-geoip2

Aktivieren Sie das Modul, indem Sie Folgendes an den Anfang von /etc/nginx/nginx.conf hinzufügen:

load_module modules/ngx_http_geoip2_module.so;
load_module modules/ngx_stream_geoip2_module.so;

Dieses Dokument beschreibt nginx-module-geoip2 v3.4, veröffentlicht am 22. Juni 2022.


ngx_http_geoip2_module - erstellt Variablen mit Werten aus den MaxMind GeoIP2-Datenbanken basierend auf der Client-IP (Standard) oder aus einer bestimmten Variablen (unterstützt sowohl IPv4 als auch IPv6)

Das Modul unterstützt jetzt NGINX-Streams und kann auf die gleiche Weise verwendet werden, wie das HTTP-Modul verwendet werden kann.

Herunterladen der MaxMind GeoLite2-Datenbank (optional)

Die kostenlosen GeoLite2-Datenbanken sind auf Maxminds Website erhältlich (eine Anmeldung ist erforderlich).

Beispielverwendung:

http {
    ...
    geoip2 /etc/maxmind-country.mmdb {
        auto_reload 5m;
        $geoip2_metadata_country_build metadata build_epoch;
        $geoip2_data_country_code default=US source=$variable_with_ip country iso_code;
        $geoip2_data_country_name country names en;
    }

    geoip2 /etc/maxmind-city.mmdb {
        $geoip2_data_city_name default=London city names en;
    }
    ....

    fastcgi_param COUNTRY_CODE $geoip2_data_country_code;
    fastcgi_param COUNTRY_NAME $geoip2_data_country_name;
    fastcgi_param CITY_NAME    $geoip2_data_city_name;
    ....
}

stream {
    ...
    geoip2 /etc/maxmind-country.mmdb {
        $geoip2_data_country_code default=US source=$remote_addr country iso_code;
    }
    ...
}
Metadaten:

Rufen Sie Metadaten zur GeoIP-Datenbank ab.

$variable_name metadata <field>
Verfügbare Felder: - build_epoch: der Zeitstempel des Builds der MaxMind-Datenbank. - last_check: die letzte Zeit, zu der die Datenbank auf Änderungen überprüft wurde (bei Verwendung von auto_reload) - last_change: die letzte Zeit, zu der die Datenbank neu geladen wurde (bei Verwendung von auto_reload)

Autoreload (Standard: deaktiviert):

Die Aktivierung des automatischen Nachladens bewirkt, dass NGINX die Änderungszeit der Datenbank in dem angegebenen Intervall überprüft und sie neu lädt, wenn sie sich geändert hat.

auto_reload <interval>

GeoIP:

$variable_name [default=<value] [source=$variable_with_ip] path ...
Wenn default nicht angegeben ist, ist die Variable leer, wenn sie nicht gefunden wird.

Wenn source nicht angegeben ist, wird $remote_addr verwendet, um die Abfrage durchzuführen.

Um den Pfad der gewünschten Daten zu finden (z. B.: country names en), verwenden Sie das mmdblookup-Tool:

$ mmdblookup --file /usr/share/GeoIP/GeoIP2-Country.mmdb --ip 8.8.8.8

  {
    "country":
      {
        "geoname_id":
          6252001 <uint32>
        "iso_code":
          "US" <utf8_string>
        "names":
          {
            "de":
              "USA" <utf8_string>
            "en":
              "United States" <utf8_string>
          }
      }
  }

$ mmdblookup --file /usr/share/GeoIP/GeoIP2-Country.mmdb --ip 8.8.8.8 country names en

  "United States" <utf8_string>

Das übersetzt sich zu:

$country_name "default=United States" source=$remote_addr country names en
Zusätzliche Befehle:

Diese Befehle funktionieren genauso wie das ursprüngliche ngx_http_geoip_module, das hier dokumentiert ist: http://nginx.org/en/docs/http/ngx_http_geoip_module.html#geoip_proxy.

Wenn Sie jedoch die Option source=$variable_with_ip für eine Variable angeben, werden diese Einstellungen für diese spezielle Variable ignoriert.

geoip2_proxy < cidr >
Definiert vertrauenswürdige Adressen. Wenn eine Anfrage von einer vertrauenswürdigen Adresse kommt, wird eine Adresse aus dem "X-Forwarded-For"-Headerfeld verwendet.

geoip2_proxy_recursive < on | off >
Wenn die rekursive Suche deaktiviert ist, wird anstelle der ursprünglichen Clientadresse, die mit einer der vertrauenswürdigen Adressen übereinstimmt, die letzte Adresse verwendet, die in "X-Forwarded-For" gesendet wurde. Wenn die rekursive Suche aktiviert ist, wird anstelle der ursprünglichen Clientadresse, die mit einer der vertrauenswürdigen Adressen übereinstimmt, die letzte nicht vertrauenswürdige Adresse verwendet, die in "X-Forwarded-For" gesendet wurde.

GitHub

Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-geoip2.