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

PHPz
Freigeben: 2023-05-26 19:32:28
nach vorne
2224 Leute haben es durchsucht

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;
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren
vim conf/geo.conf
Nach dem Login kopieren
10.2.0.0/16  ru;
192.168.2.0/24 ru;
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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
Nach dem Login kopieren


Server2:

shell $> cd /usr/local/nginx/html
shell $> rm index.html
shell $> echo "192.168.6.102" > index.html
Nach dem Login kopieren


Upgrade ihrer Dienste

shell $> /usr/local/nginx/sbin/nginx
Nach dem Login kopieren

2. Ändern Sie die Konfiguration von Server3`



shell $> cd /usr/local/nginx/conf/
shell $> vim nginx.conf
Nach dem Login kopieren
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;
    }
  }
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!