Node.js は、効率的で軽量なネットワーク アプリケーション開発を可能にする、オープン ソースのクロスプラットフォーム JavaScript ランタイム環境です。ネットワーク アプリケーションの開発過程では、リバース プロキシ、ロード バランシングなど、転送が必要な状況に遭遇することがよくあります。この記事では、Node.js で転送を設定する方法を紹介します。
1. リバース プロキシ
リバース プロキシは、一般的なサーバー アプリケーション シナリオであり、リクエストを他のサーバーに転送することでクライアントのリクエストを処理するテクノロジーです。たとえば、クライアント要求をリバース プロキシ経由で別のサーバーに転送し、負荷分散を実現できます。 Node.js では、http-proxy モジュールを使用してリバース プロキシを実装できます。
http-proxy モジュールを使用する前に、まずそれをインストールする必要があります。 npm コマンドを使用してインストールできます。
npm install http-proxy --save
次に、リバース プロキシ コードの作成を開始できます。以下は、クライアント要求をローカルの localhost:3000 サーバーに転送する簡単なリバース プロキシの例です。
const httpProxy = require('http-proxy'); const proxy = httpProxy.createProxyServer({}); require('http').createServer((req, res) => { proxy.web(req, res, { target: 'http://localhost:3000' }); }).listen(80);
上記のコードでは、まず http-proxy のインスタンスを作成し、次に Node を使用してサーバーを作成します。 .js の組み込み http モジュールとポート 80 でリッスンします。クライアント要求が到着すると、proxy.web() メソッドを通じてローカルの localhost:3000 サーバーに転送します。
リバース プロキシ コードを作成した後、次のコマンドで実行できます:
node app.js
すべてが正常な場合, ブラウザから http://localhost にアクセスすると、リバース プロキシ サーバーにアクセスできます。
2. 負荷分散
負荷分散は、サーバー アプリケーションの一般的なシナリオであり、クライアントのリクエストをさまざまなサーバーに分散してサーバーの負荷のバランスをとるテクノロジーです。 Node.js では、haproxy や Nginx などのサードパーティ ツールの使用を含め、負荷分散を実現するさまざまな方法が提供されています。また、独自のコードを作成して負荷分散を実現することもできます。
ラウンドロビン負荷分散戦略は、リクエストをさまざまなサーバーに均等に分散する単純な負荷分散戦略です。 Node.js では、クラスター モジュールをラウンドロビン負荷分散戦略と組み合わせて使用して、負荷分散を実現できます。
以下は、単純な負荷分散サンプル コードです。
const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; if (cluster.isMaster) { console.log(`主进程 ${process.pid} 正在运行`); // Fork workers. for (let i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', (worker, code, signal) => { console.log(`工作进程 ${worker.process.pid} 已退出`); }); } else { http.createServer((req, res) => { res.writeHead(200); res.end(`工作进程 ${process.pid} 返回 Hello World!`); }).listen(8000); console.log(`工作进程 ${process.pid} 已启动`); }
上記のコードでは、最初にクラスター モジュールを使用します。現在のプロセスがメインプロセスかどうかを確認します。メインプロセスの場合は、cluster.fork() メソッドを使用して複数のワーカープロセスを作成します。各ワーカー プロセスはポート 8000 をリッスンし、「Hello World!」文字列を返します。リクエストが到着すると、メインプロセスはそれを別のワーカープロセスに割り当てます。
負荷分散コードを作成した後、次のコマンドで実行できます:
node app.js
すべてが正常な場合, we ブラウザから http://localhost:8000 にアクセスすると、負荷分散サーバーにアクセスできます。
概要
この記事では、リバース プロキシや負荷分散など、Node.js で転送を構成する方法を紹介します。リバース プロキシはクライアント リクエストを別のサーバーに転送でき、負荷分散ではクライアント リクエストを別のワーク プロセスに割り当ててサーバーのパフォーマンスを最適化できます。 Node.js では、これらの機能を実装するためのモジュールやツールが多数提供されており、開発者はニーズに応じて適切なソリューションを選択できます。
以上がnodejs設定の転送の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。