Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Modul geo dalam Nginx dan cara menggunakannya untuk mengkonfigurasi pengimbangan beban

Modul geo dalam Nginx dan cara menggunakannya untuk mengkonfigurasi pengimbangan beban

PHPz
PHPzke hadapan
2023-05-26 19:32:282162semak imbas

Arahan geo disediakan oleh modul ngx_http_geo_module. Secara lalai, nginx memuatkan modul ini melainkan --without-http_geo_module dikonfigurasikan secara manual.
Modul ngx_http_geo_module boleh digunakan untuk mencipta pembolehubah yang nilainya bergantung pada alamat IP klien.
arahan geo
Sintaks: geo [$address] $variable { ... }
Nilai lalai: —
Bahagian konfigurasi: http
Mentakrifkan daripada pembolehubah yang ditentukan Dapatkan alamat ip pelanggan. Secara lalai, nginx mendapat alamat IP klien daripada pembolehubah $remote_addr, tetapi ia juga boleh diperoleh daripada pembolehubah lain. Seperti

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

Jika nilai pembolehubah ini tidak mewakili alamat IP yang sah, maka nginx akan menggunakan alamat "255.255.255.255".
nginx menerangkan alamat melalui cidr atau segmen alamat dan menyokong parameter berikut:

  • padam: padamkan rangkaian yang ditentukan

  • jika Jika alamat pelanggan tidak dapat sepadan dengan mana-mana alamat yang ditentukan, nginx akan menggunakan nilai lalai. CIDR boleh menggunakan "0.0.0.0/0" untuk menggantikan nilai lalai.

  • termasuk: Mengandungi fail yang mentakrifkan alamat dan nilai serta boleh mengandungi berbilang fail.

  • proksi: Tentukan alamat yang dipercayai. Apabila permintaan datang daripada alamat yang dipercayai, nginx akan mendapatkan maklumat alamat dengan bantuan pengepala "X-Forwarded-For". Berbanding dengan alamat biasa, alamat yang dipercayai dikesan secara berurutan.

  • proxy_recursive: Dayakan carian alamat rekursif. Jika carian rekursif dimatikan, nginx akan menggunakan alamat terakhir dalam "x-forwarded-for" dan bukannya alamat klien asal apabila alamat klien sepadan dengan alamat yang dipercayai. Jika carian rekursif didayakan, apabila alamat klien sepadan dengan alamat yang dipercayai, nginx akan menggunakan alamat terakhir dalam "x-forwarded-for" yang tidak sepadan dengan mana-mana alamat yang dipercayai untuk menggantikan alamat klien asal.

  • julat: Tentukan alamat dalam bentuk segmen alamat Parameter ini mesti diletakkan dahulu. Untuk mempercepatkan pemuatan pustaka alamat, alamat hendaklah ditakrifkan dalam tertib menaik.

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;

Contoh segmen alamat:

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;
}

Arahan geo terutamanya memberikan nilai kepada pembolehubah berdasarkan IP. Oleh itu, hanya IP atau segmen rangkaian boleh ditakrifkan di bawah blok geo, jika tidak ralat akan dilaporkan.

Modul Geo merealisasikan pengimbangan beban global
Pelayan1: 192.168.6.101
192.168.6.102
Pelayan3: 192.168.6.12
Mesin

ip: 192.168.6.2
Uji mesin 2 ip: 192.168.6.8
Uji mesin 3 ip: 192.168.6.189

1 ia!
Saya tidak menukar konfigurasi pelayan1 dan pelayan2~ Saya hanya menukar halaman utama, yang berguna untuk ujian!
pelayan1:

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


pelayan2:

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


Naikkan perkhidmatan mereka

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

2 .Ubah suai konfigurasi pelayan3`

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 Uji, buka penyemak imbas pada mesin ujian 1 dan masukkan
http://192.168.6.121
paparan
.

Modul geo dalam Nginx dan cara menggunakannya untuk mengkonfigurasi pengimbangan beban

Oleh kerana alamat IP mesin ujian 1 ialah 192.168.6.2 dan mengikut konfigurasi nginx, jelas sekali dia mengakses server3 port 8080! Kerana index.html server1 server2, saya mengubah suai

dan membuka penyemak imbas pada mesin ujian 2 ~ input
http://192.168.6.121
paparan

Modul geo dalam Nginx dan cara menggunakannya untuk mengkonfigurasi pengimbangan beban

Buka penyemak imbas pada mesin ujian 3 ~ masukkan
http://192.168.6.121
Ip mesin ujian 3 ialah 192.168.6.189
Paparan:

Modul geo dalam Nginx dan cara menggunakannya untuk mengkonfigurasi pengimbangan beban

Jelas sekali, pengimbangan beban memainkan peranan~~~
Dengan cara ini, ketiga-tiga pelayan boleh diletakkan di bilik komputer IDC yang berbeza. Kemudian hanya menyegerakkan data~ Kelebihan ini ialah ia menjimatkan masalah dengan DNS, kerana DNS pintar kadang-kadang akan menghuraikan alamat DNS pihak lain apabila menghuraikan mengikut IP yang melawat, dan memadankannya dengan pelayan Jika pihak lain Dia ialah pengguna Netcom, dan DNS Telekom yang digunakannya akan memadankannya terus dengan pelayan Telekom, nginx, dan memadankan pelayan berdasarkan IP akses Dengan cara ini, selagi kami mengumpul segmen IP setiap rantau, ia akan baiklah

Atas ialah kandungan terperinci Modul geo dalam Nginx dan cara menggunakannya untuk mengkonfigurasi pengimbangan beban. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam