ホームページ >バックエンド開発 >PHPチュートリアル >NodeJS アプリケーションの負荷分散に Nginx を使用する
「NodeJS アプリケーションの負荷分散に Nginx を使用する」
著者: chszs 転載の際は明記をお願いします。ブログのホームページ: http://blog.csdn.net/chszs
負荷分散により、ユーザーのリクエストを複数のサーバーに割り当てて処理できるため、多数のユーザーのアクセスのサポートが実現します。負荷分散アーキテクチャを次の図に示します。
複雑な Web アプリケーションの場合、フロントエンドの負荷分散に Nginx を使用するのは当然のことです。
次に、Nginx を使用して NodeJS アプリケーションの負荷分散を行います。
1. Nginx を構成する
nginx.conf を変更します:
.... upstream sample { server 127.0.0.1:3000; server 127.0.0.1:3001; keepalive 64; } server { listen 80; .... server_name 127.0.0.1; .... location / { proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_set_header Connection ""; proxy_http_version 1.1; proxy_pass http://sample; } }ポート 3000 とポート 3001 に Node.js サーバーがあります。これら 2 つのサーバーは同じジョブを実行します。上流セクションでは、2 つの Node.js サーバーが構成されています。さらに、HTTP リクエスト プロキシとして proxy_pass http://sample も設定します。
2. NodeJS サーバーを構築します
var http = require('http'); var morgan = require('morgan'); var server1 = http.createServer(function (req, res) { console.log("Request for: " + req.url + "-- port 3000 "); res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello Node.js\n'); }).listen(3000, "127.0.0.1"); var server2 = http.createServer(function (req, res) { console.log("Request for: " + req.url + "-- port 3001 "); res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello Node.js\n'); }).listen(3001, "127.0.0.1"); server1.once('listening', function() { console.log('Server running at http://127.0.0.1:3000/'); }); server2.once('listening', function() { console.log('Server running at http://127.0.0.1:3001/'); });3. Nginx サーバーにアクセスします
これで、http://127.0.0.1 にアクセスできるようになります
Server running at http://127.0.0.1:3000/ Server running at http://127.0.0.1:3001/ Request for: /-- port 3001 Request for: /favicon.ico-- port 3000 Request for: /favicon.ico-- port 3001 Request for: /-- port 3000 Request for: /favicon.ico-- port 3001 Request for: /favicon.ico-- port 3000 Request for: /-- port 3001 Request for: /favicon.ico-- port 3000 Request for: /favicon.ico-- port 3001 Request for: /-- port 3000 Request for: /favicon.ico-- port 3001 Request for: /favicon.ico-- port 3000
上記では、関連する側面も含めて、NodeJS アプリケーションの負荷分散のための Nginx の使用法を紹介しました。PHP チュートリアルに興味のある友人にとって役立つことを願っています。