您当前的位置:首页 > 计算机 > 服务器 > Nginx

Nodejs+ Nginx 强强合作

时间:12-14来源:作者:点击数:

node.js 做服务器?

久经考验的 nginx 前置顶住压力,后面多个 node 服务器完成业务支撑,这样的做法是放心的,是走正道的。

这里要做一个实验:

  • 一个 nginx 作为前台的服务器
  • 全部请求,经过负载均衡,尽可能均衡的分步到后面的2台node服务器

准备 node

首先启动两台 node,分别监听 3000,3001 端口。为了区分,helloworld会带一个端口返回,通知客户端,以便区别是谁在提供服务。

node.js server

$cat 1.js 
require('http').createServer(function (request, response) {  
  response.end('hello world\n'+process.argv[2]);  
}).listen(process.argv[2]);  
$node 1.js 3000
$node 1.js 3001

验证 node 服务器启动

λ curl localhost:3000
hello world
3000
λ curl localhost:3001
hello world
3001

准备 nginx 服务器的配置。

要点是通过 upstream 指令把两个 node 服务器打成一个服务器池。然后通过 location 指令,要求全部根目录请求转发到这个池内。池会对它之内的服务器做负载均衡。

nginx conf

worker_processes  1;
events {
    worker_connections  1024;
}
http {
     upstream node_server_pool {
       server localhost:3001 max_fails=1;
       server localhost:3000 max_fails=1;
    }
    server{
      listen       80;
      server_name localhost;
      location /
       {
        proxy_pass http://node_server_pool;
       }
    }
}

模拟客户端访问

我用 curl 多次访问 nginx 服务器,可以通过返回的字符串知道服务器。你看,真的可以负载均衡,一会儿 helloworld 3000,一会儿 helloworld 3001。

λ curl localhost
hello world
3000
λ curl localhost
hello world
3001
λ curl localhost
hello world
3001
λ curl localhost
hello world
3000

你看,ngnix 是公平的。哪怕就一个客户的多次访问都会换着服务器来。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐