Nginx做NodeJS应用负载均衡配置实例

 更新时间:2015年01月29日 14:22:51   投稿:junjie  
这篇文章主要介绍了Nginx做NodeJS应用负载均衡配置实例,本文直接给出配置实例,需要的朋友可以参考下

负载均衡可以把用户的请求分摊到多个服务器上进行处理,从而实现了对海量用户的访问支持。负载均衡的架构如图所示:

对于复杂的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
可以看到如下的输出:

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  

相关文章

  • 详解nginx 的 default_server 定义及匹配规则

    详解nginx 的 default_server 定义及匹配规则

    这篇文章主要介绍了详解nginx 的 default_server 定义及匹配规则,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • nginx上传文件限制的操作步骤

    nginx上传文件限制的操作步骤

    Nginx限制文件大小可以通过 client_max_body_size 指令来设置,该指令通常在 http、server 或location 块中设置,如果不设置,默认上传大小为1M,这篇文章主要介绍了nginx上传文件限制,需要的朋友可以参考下
    2024-08-08
  • Nginx 操作响应头信息的实现

    Nginx 操作响应头信息的实现

    这篇文章主要介绍了Nginx 操作响应头信息的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • nginx限制IP恶意调用短信接口处理方法

    nginx限制IP恶意调用短信接口处理方法

    这篇文章主要介绍了nginx限制IP恶意调用短信接口处理方法,一种是nginx黑名单方式,另一种是限制IP请求数。需要的朋友可以参考下
    2018-06-06
  • nginx 配置虚拟主机,实现在一个服务器可以访问多个网站的方法

    nginx 配置虚拟主机,实现在一个服务器可以访问多个网站的方法

    下面小编就为大家分享一篇nginx 配置虚拟主机,实现在一个服务器可以访问多个网站的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • 503 service unavailable错误解决方案讲解

    503 service unavailable错误解决方案讲解

    这篇文章主要介绍了503 service unavailable错误解决方案讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • nginx隐藏响应头server信息和版本号信息的操作方法

    nginx隐藏响应头server信息和版本号信息的操作方法

    文章介绍了两种隐藏或修改Nginx响应头中server信息的方法:一种是通过修改配置文件全局段添加`server_tokens off`,另一种是重新编译Nginx并修改Banner信息,两种方法分别适用于传统部署和需要更灵活自定义的情况,需要的朋友可以参考下
    2025-02-02
  • Nginx对网段内ip的连接数限流配置详解

    Nginx对网段内ip的连接数限流配置详解

    这篇文章主要介绍了Nginx对网段内ip的连接数限流配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 使用google-perftools优化nginx在高并发时的性能的教程(完整版)

    使用google-perftools优化nginx在高并发时的性能的教程(完整版)

    如果使用googler开发的google-perftools优化Nginx和MySQL的内存管理,性能将会有一定程度的提升。特别是对高并发下的服务器,效果更明显
    2013-02-02
  • Nginx配置入门教程

    Nginx配置入门教程

    这篇文章主要介绍了Nginx配置入门教程,本文讲解了反向代理的概念、初始配置、进阶配置、负载均衡配置等内容,需要的朋友可以参考下
    2015-02-02

最新评论