首頁 >後端開發 >php教程 >用Nginx做NodeJS應用的負載平衡

用Nginx做NodeJS應用的負載平衡

WBOY
WBOY原創
2016-08-08 09:30:31901瀏覽

《用Nginx做NodeJS應用的負載平衡》

作者: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伺服器,這兩個伺服器在做同樣的工作。在upstream節,配置了兩個Node.js伺服器。此外,我們也設定了proxy_pass http://sample做HTTP請求代理程式。

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

可以看到以下的輸出:


以上就介紹了用Nginx做NodeJS應用的負載平衡,包括了方面的內容,希望對PHP教程有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn