Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Das Geo-Modul in Nginx und wie man es zum Konfigurieren des Lastausgleichs verwendet

Das Geo-Modul in Nginx und wie man es zum Konfigurieren des Lastausgleichs verwendet

PHPz
PHPznach vorne
2023-05-26 19:32:282226Durchsuche

Die Geo-Direktive wird vom Modul ngx_http_geo_module bereitgestellt. Standardmäßig lädt Nginx dieses Modul, es sei denn, --without-http_geo_module wird manuell konfiguriert. Mit dem Modul
ngx_http_geo_module können Variablen erstellt werden, deren Werte von der IP-Adresse des Clients abhängen.
geo-Befehl
Syntax: geo [$address] $variable { ... }
Standardwert: —
Konfigurationsabschnitt: http
Definition zum Abrufen der IP-Adresse des Clients aus der angegebenen Variablen. Standardmäßig erhält nginx die Client-IP-Adresse aus der Variablen $remote_addr, sie kann jedoch auch aus anderen Variablen bezogen werden. Zum Beispiel

geo $remote_addr $geo {
    default 0;
    127.0.0.1 1;
}
geo $arg_ttlsa_com $geo {
    default 0;
    127.0.0.1 1;
}

Wenn der Wert dieser Variablen keine legale IP-Adresse darstellt, verwendet Nginx die Adresse „255.255.255.255“.
nginx beschreibt die Adresse über cidr oder Adresssegment und unterstützt die folgenden Parameter:

  • delete: Löschen Sie das angegebene Netzwerk.

  • Wenn die Client-Adresse mit keiner definierten Adresse übereinstimmen kann, verwendet nginx den Standardwert. CIDR kann „0.0.0.0/0“ verwenden, um den Standardwert zu ersetzen.

  • include: Enthält eine Datei, die Adressen und Werte definiert und mehrere enthalten kann.

  • Proxy: Definieren Sie vertrauenswürdige Adressen. Wenn die Anfrage von einer vertrauenswürdigen Adresse kommt, erhält Nginx die Adressinformationen mithilfe seines „X-Forwarded-For“-Headers. Im Vergleich zu gewöhnlichen Adressen werden vertrauenswürdige Adressen nacheinander erkannt.

  • proxy_recursive: Rekursive Adresssuche aktivieren. Wenn die rekursive Suche deaktiviert ist, verwendet Nginx die letzte Adresse in „x-forwarded-for“ anstelle der ursprünglichen Client-Adresse, wenn die Client-Adresse mit einer vertrauenswürdigen Adresse übereinstimmt. Wenn die rekursive Suche aktiviert ist und die Client-Adresse mit einer vertrauenswürdigen Adresse übereinstimmt, verwendet Nginx die letzte Adresse in „x-forwarded-for“, die keiner vertrauenswürdigen Adresse entspricht, um die ursprüngliche Client-Adresse zu ersetzen.

  • Bereiche: Definieren Sie die Adresse in Form eines Adresssegments. Dieser Parameter muss zuerst platziert werden. Um das Laden der Adressbibliothek zu beschleunigen, sollten Adressen in aufsteigender Reihenfolge definiert werden.

geo $country {
  default    zz;
  include    conf/geo.conf;
  delete     127.0.0.0/16;
  proxy     192.168.100.0/24;
  proxy     2001:0db8::/32;
 
  127.0.0.0/24  us;
  127.0.0.1/32  ru;
  10.1.0.0/16  ru;
  192.168.1.0/24 uk;
}
vim conf/geo.conf
10.2.0.0/16  ru;
192.168.2.0/24 ru;

Adresssegmentbeispiel:

geo $country {
  ranges;
  default          zz;
  127.0.0.0-127.0.0.0    us;
  127.0.0.1-127.0.0.1    ru;
  127.0.0.1-127.0.0.255   us;
  10.1.0.0-10.1.255.255   ru;
  192.168.1.0-192.168.1.255 uk;
}

Der Geo-Befehl weist Variablen hauptsächlich Werte basierend auf IP zu. Daher können unter dem Geoblock nur IP- oder Netzwerksegmente definiert werden, andernfalls wird ein Fehler gemeldet. Das Geo-Modul implementiert den globalen Lastausgleich

Testmaschine 2 IP: 192.168.6.8

Testmaschine 3 IP: 192.168.6.189
1. Kompilieren und installieren Sie Nginx auf jedem Server, mehr verrate ich nicht!
Ich habe die Konfigurationen von Server1 und Server2 nicht geändert ~ ich habe nur deren Homepage geändert, was zum Testen hilfreich ist!
Server1:

shell $> cd /usr/local/nginx/html
shell $> rm index.html
shell $> echo "192.168.6.101" > index.html


Server2:

shell $> cd /usr/local/nginx/html
shell $> rm index.html
shell $> echo "192.168.6.102" > index.html


Upgrade ihrer Dienste

shell $> /usr/local/nginx/sbin/nginx

2. Ändern Sie die Konfiguration von Server3`



shell $> cd /usr/local/nginx/conf/
shell $> vim nginx.conf
worker_processes 1;
 
events {
  worker_connections 1024;
}
http {
  include    mime.types;
  default_type application/octet-stream;
  geo $geo {
    default default;
    192.168.6.189/32    uk;
    192.168.6.8/32     us;
#这里的子网码是 32 是因为,我是单网段测试,如果你有vlan,你可以是24 例如
# 192.168.0.0/24   tw
  }
  upstream  uk.server {
    server 192.168.6.101;
  }
  upstream  us.server {
    server 192.168.6.102;
  }
  upstream  default.server {
    server 192.168.6.121:8080;
  }
  sendfile    on;
  keepalive_timeout 65;

  server {
    listen    80;
    server_name 192.168.6.121;
    index index.html index.htm;
    root html;

    location / {
        proxy_redirect off;
        proxy_set_header host $host;
        proxy_set_header x-real-ip $remote_addr;
        proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
        proxy_pass http://$geo.server$request_uri;
    }
    error_page  500 502 503 504 /50x.html;
    location = /50x.html {
      root  html;
    }
 
  }
 
  server {
    listen    8080;
    server_name 192.168.6.121;
    location / {
      root  html;
      index index.html index.htm;
    }
  }
}

3. Öffnen Sie den Browser auf dem Testcomputer 1 Gerät Geben Sie
ein http://192.168.6.121
und es wird



angezeigt, da die IP-Adresse von Testmaschine 1 192.168.6.2 lautet. Laut Nginx-Konfiguration ist es offensichtlich, dass er auf Server3-Port 8080 zugreift! Weil ich die index.html von Server1 Server2 geändert habe

Öffnen Sie den Browser auf Testmaschine 2 ~ geben Sie
http://192.168.6.121 ein
Anzeige

Das Geo-Modul in Nginx und wie man es zum Konfigurieren des Lastausgleichs verwendet


Öffnen Sie den Browser auf Testmaschine 3 ~ geben Sie
http ein :/ /192.168.6.121
Die IP der Testmaschine 3 ist 192.168.6.189
Anzeige:

Das Geo-Modul in Nginx und wie man es zum Konfigurieren des Lastausgleichs verwendet

Offensichtlich spielt der Lastausgleich eine Rolle~~~
Auf diese Weise können die drei Server in verschiedenen IDC-Computerräumen platziert werden. Dann synchronisieren Sie einfach die Daten. Dies hat den Vorteil, dass Sie sich die Mühe mit DNS ersparen, da intelligentes DNS beim Parsen manchmal die DNS-Adresse der anderen Partei anhand der besuchenden IP analysiert und sie einem Server zuordnet Ist ein Netcom-Benutzer, ordnet er ihn direkt dem Telecom-Server Nginx zu und ordnet ihn anhand der Zugriffs-IP zu, solange wir die IP-Segmente in jeder Region erfassen gut

Das obige ist der detaillierte Inhalt vonDas Geo-Modul in Nginx und wie man es zum Konfigurieren des Lastausgleichs verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen