nginx反向代理和负载均衡到底是啥子联系?

nginx反向代理和负载均衡到底是啥子联系?

阅读 8.9k
4 个回答
  • 反向代理就是后端服务不直接对外暴露,请求首先发送到nginx,然后nginx将请求转发到后端服务器,比如tomcat等.如果后端服务只有一台服务器,nginx在这里只有一个作用就是起到了代理后端服务接收请求的作用.称之为反向代理.

  • 可是在现实的应用场景中,一台后端服务器出现单点故障的概率很大或者单台机器的吞吐量有限,无法承担过多请求.这时候就需要在nginx后端配置多台服务器,利用nginx内置的规则讲请求转发到后端不同的机器上.这时候就起到了负载均衡的作用.

当然我只是粗略一说,现实的架构远远比这个复杂.但对于明白这个区别已经够了.

如果没有反向代理,压力直接放到一个单一的http server上。而有了反向代理,典型情况下,一个ngnix做反向代理,后面有若干个http Server。所有的流量想到ngnix,这个东西根据配置的策略,或者轮转,或者随机或者压力分流,把流量导向给后面的Http server。从而达到负载均衡。

ngnix + node 的负载均衡 - SegmentFault - http://segmentfault.com/a/1190000003023558

两个东西:

  • 反向代理: 应用服务器不直接提供服务,通过nginx之类的http(s)服务器处理请求根据不同的 location(不同域名、不同请求路径等), 去不同的应用服务器(Tomcat,Apache等) 获取响应交给客户端, 用户看起来就像是这个nginx服务器直接处理的请求一样的。

  • 负载均衡: 广义上不仅指 http服务器级别的负载(最流行就是拿Nginx来做), 也包括LVS这种起底与操作系统级别的优化处理,目的是为了确保应用服务器快速响应的同时,不造成底层应用服务器阻塞,更好的发挥它们的数据处理能力。

反向代理和负载均衡本来是两个东西,不过nginx在反向代理的后端upstream这个地方实现了几个常用的负载均衡的算法而已。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏