ホームページ >運用・保守 >Nginx >分散システムの構築: Nginx Proxy Manager を使用してサービス検出とルーティングを実装する

分散システムの構築: Nginx Proxy Manager を使用してサービス検出とルーティングを実装する

PHPz
PHPzオリジナル
2023-09-26 10:03:211203ブラウズ

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

分散システムの構築: Nginx Proxy Manager を使用したサービス検出とルーティングの実装

概要:
最新の分散システムでは、サービス検出とルーティングが非常に重要です。特徴。サービス ディスカバリにより、システムは利用可能なサービス インスタンスを自動的に検出して登録できるようになり、ルーティングによりリクエストが適切なサービス インスタンスに正しく転送されることが保証されます。この記事では、Nginx Proxy Manager を活用してシンプルかつ強力なサービス検出およびルーティング ソリューションを構築する方法を紹介し、具体的なコード例を示します。

  1. Nginx プロキシ マネージャーについて理解する
    Nginx プロキシ マネージャーは、リバース プロキシ サーバーを構成および管理するための使いやすい Web インターフェイスを提供する Nginx ベースのプロキシ サーバー マネージャーです。 HTTP、HTTPS、TCP、UDP プロキシをサポートし、リクエストのロード バランシングや SSL 終了などの機能を実装できます。
  2. Nginx Proxy Manager のインストールと構成
    まず、Nginx Proxy Manager をインストールする必要があります。次のコマンドでインストールできます:
npm install -g nginx-proxy-manager

インストールが完了したら、次のコマンドを使用して Nginx Proxy Manager を起動できます:

npm start

起動後は、次のコマンドにアクセスできます。 http:/ ブラウザー /localhost:81 を介して、Nginx Proxy Manager の Web インターフェイスを開きます。初めてアクセスするときは、管理者のユーザー名とパスワードを設定する必要があります。

  1. サービス ディスカバリの構成
    Nginx Proxy Manager の Web インターフェイスで、「アップストリーム」を追加してサービス ディスカバリを構成できます。各アップストリームは、複数のインスタンス (ノード) を含むサービスを表します。各アップストリームでは、インスタンスの IP アドレスとポート番号を指定できます。

以下はアップストリーム構成の例です:

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

この構成では、2 つのインスタンス (192.168.0.1 :8000 と 192.168.0.2) を含む my_service という名前のアップストリームを作成しました。 :8000。

  1. ルーティングの構成
    Nginx Proxy Manager の Web インターフェイスでは、「プロキシ ホスト」を追加してルーティングを構成できます。各プロキシ ホストは、リクエストの送信元と宛先を定義するルーティング ルールを表します。

以下はプロキシ ホスト構成のサンプルです:

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

この構成では、mydomain.com/myroute からのすべてのリクエストを my_service アップストリーム ルールに転送するルートを作成します。

  1. サンプル コードの使用
    Nginx Proxy Manager の使用方法を示すために、HTTP サーバーを起動してサービスのインスタンスとして登録する簡単な Node.js サンプル コードを以下に示します。 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
});

このサンプル コードでは、ポート 8000 でリッスンする HTTP サーバーを起動します。サービスを Nginx Proxy Manager に登録するには、サーバーを起動するコールバック関数に対応する登録コードを追加する必要があります。

Nginx Proxy Manager が提供する API を使用して、サービス インスタンスを登録および登録解除できます。以下は、Nginx Proxy Manager にサービス インスタンスを登録するためのサンプル コードです。

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');

このサンプル コードでは、axios ライブラリを使用して HTTP リクエストを送信します。 registerInstance 関数を呼び出してサービス インスタンスを登録し、インスタンス名とアドレスを Nginx Proxy Manager の API に渡します。 API によって要求されたアドレスが Nginx Proxy Manager の実際のアドレスと一致していることを確認する必要があります。

このサンプル コードを複数のサーバーで実行すると、サーバーをサービスのインスタンスとして登録し、Nginx Proxy Manager を使用してサービスの検出とルーティングを実装できます。

要約:
Nginx Proxy Manager を使用して分散システムのサービス検出およびルーティング機能を構築することで、システムの構成と管理が簡素化され、システムの信頼性と拡張性が向上します。 。この記事では、Nginx Proxy Manager のインストールと構成方法を紹介し、サービス インスタンスの登録方法とルーティング ルールの構成方法を示す具体的なコード例を示します。読者は、これらのコード例をさらに調整および拡張して、独自の分散システムのニーズを満たすことができます。

以上が分散システムの構築: Nginx Proxy Manager を使用してサービス検出とルーティングを実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。