Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Membina sistem teragih: menggunakan Pengurus Proksi Nginx untuk melaksanakan penemuan perkhidmatan dan penghalaan

Membina sistem teragih: menggunakan Pengurus Proksi Nginx untuk melaksanakan penemuan perkhidmatan dan penghalaan

PHPz
PHPzasal
2023-09-26 10:03:211153semak imbas

构建分布式系统:利用Nginx Proxy Manager实现服务发现与路由

Membina sistem teragih: menggunakan Pengurus Proksi Nginx untuk melaksanakan penemuan perkhidmatan dan penghalaan

Ikhtisar:
Dalam sistem moden penemuan perkhidmatan dan penghalaan adalah fungsi yang sangat penting. Penemuan perkhidmatan membolehkan sistem menemui dan mendaftarkan contoh perkhidmatan yang tersedia secara automatik, manakala penghalaan memastikan permintaan dimajukan dengan betul kepada tika perkhidmatan yang sesuai. Dalam artikel ini, kami akan memperkenalkan cara memanfaatkan Pengurus Proksi Nginx untuk membina penemuan perkhidmatan dan penyelesaian penghalaan yang mudah tetapi berkuasa, dan menyediakan contoh kod khusus.

  1. Fahami Pengurus Proksi Nginx
    Pengurus Proksi Nginx ialah pengurus pelayan proksi berasaskan Nginx yang menyediakan antara muka web yang mudah digunakan untuk mengkonfigurasi dan mengurus pelayan proksi terbalik. Ia menyokong proksi HTTP, HTTPS, TCP dan UDP, dan boleh melaksanakan fungsi seperti meminta pengimbangan beban dan penamatan SSL.
  2. Pasang dan konfigurasikan Pengurus Proksi Nginx
    Pertama, kita perlu memasang Pengurus Proksi Nginx. Ia boleh dipasang melalui arahan berikut:
npm install -g nginx-proxy-manager

Selepas pemasangan selesai, anda boleh menggunakan arahan berikut untuk memulakan Pengurus Proksi Nginx:

npm start

Selepas bermula, anda boleh menyemak imbas dengan Pelayan mengakses http://localhost:81 untuk membuka antara muka web Pengurus Proksi Nginx. Apabila mengakses buat kali pertama, anda perlu menetapkan nama pengguna dan kata laluan pentadbir.

  1. Mengkonfigurasi Penemuan Perkhidmatan
    Dalam antara muka web Pengurus Proksi Nginx, anda boleh mengkonfigurasi penemuan perkhidmatan dengan menambahkan "Upstreams". Setiap Hulu mewakili perkhidmatan, yang mengandungi berbilang kejadian (nod). Dalam setiap Upstream, anda boleh menentukan alamat IP dan nombor port bagi contoh tersebut.

Berikut ialah contoh konfigurasi Hulu:

Name: my_service
Servers:
- Name: server1
  Address: 192.168.0.1:8000
- Name: server2
  Address: 192.168.0.2:8000

Dalam konfigurasi ini, kami mencipta Upstream bernama my_service, yang mengandungi dua kejadian, Ia adalah 192.168.0.1 :8000 dan 192.168.0.2:8000 masing-masing.

  1. Mengkonfigurasi penghalaan
    Dalam antara muka web Pengurus Proksi Nginx, penghalaan boleh dikonfigurasikan dengan menambahkan "Hos Proksi". Setiap Hos Proksi mewakili peraturan penghalaan, yang mentakrifkan sumber dan destinasi permintaan.

Berikut ialah contoh konfigurasi Hos Proksi:

Domain Name: mydomain.com
Path: /myroute
Upstream: my_service

Dalam konfigurasi ini, kami mencipta konfigurasi yang memajukan semua permintaan daripada mydomain.com/myroute Peraturan penghalaan ke my_service Hulu.

  1. Menggunakan kod sampel
    Untuk menunjukkan penggunaan Pengurus Proksi Nginx, berikut ialah kod contoh Node.js mudah untuk memulakan pelayan HTTP dan menyediakannya sebagai perkhidmatan. instance of didaftarkan kepada Pengurus Proksi Nginx:
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello, world!');
});

app.listen(8000, () => {
  console.log('Server is running on http://localhost:8000');
  // TODO: Register the server with Nginx Proxy Manager
});

Dalam kod sampel ini, kami memulakan pelayan HTTP mendengar pada port 8000. Untuk mendaftarkan perkhidmatan ini dengan Pengurus Proksi Nginx, anda perlu menambah kod pendaftaran yang sepadan dalam fungsi panggil balik yang memulakan pelayan.

Anda boleh menggunakan API yang disediakan oleh Pengurus Proksi Nginx untuk mendaftar dan membatalkan pendaftaran contoh perkhidmatan. Berikut ialah contoh kod untuk mendaftarkan contoh perkhidmatan kepada Pengurus Proksi Nginx:

const axios = require('axios');

const registerInstance = async (name, address) => {
  try {
    await axios.post('http://localhost:81/api/proxy/host', {
      name,
      target: address,
    });
    console.log(`Instance ${name} registered successfully`);
  } catch (error) {
    console.error(`Failed to register instance ${name}`, error);
  }
};

// Register the server instance with Nginx Proxy Manager
registerInstance('server1', 'http://192.168.0.1:8000');

Dalam kod sampel ini, kami menggunakan perpustakaan axios untuk menghantar permintaan HTTP. Daftarkan contoh perkhidmatan dengan memanggil fungsi registerInstance, menghantar nama dan alamat contoh kepada API Pengurus Proksi Nginx. Anda perlu memastikan bahawa alamat yang diminta oleh API adalah konsisten dengan alamat sebenar Pengurus Proksi Nginx.

Dengan menjalankan kod sampel ini pada berbilang pelayan, anda boleh mendaftarkannya sebagai contoh perkhidmatan dan menggunakan Pengurus Proksi Nginx untuk melaksanakan penemuan perkhidmatan dan penghalaan.

Ringkasan:
Dengan menggunakan Pengurus Proksi Nginx untuk membina penemuan perkhidmatan dan fungsi penghalaan sistem teragih, konfigurasi dan pengurusan sistem dapat dipermudahkan dan kebolehpercayaan dan skalabiliti sistem dapat diperbaiki. Artikel ini memperkenalkan kaedah pemasangan dan konfigurasi Pengurus Proksi Nginx, dan menyediakan contoh kod khusus untuk menunjukkan cara mendaftar contoh perkhidmatan dan mengkonfigurasi peraturan penghalaan. Pembaca boleh melaraskan dan melanjutkan contoh kod ini untuk memenuhi keperluan sistem edaran mereka sendiri.

Atas ialah kandungan terperinci Membina sistem teragih: menggunakan Pengurus Proksi Nginx untuk melaksanakan penemuan perkhidmatan dan penghalaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn