Answers
假设医院有3个医生给人看病,他们技术水平完全一样,一个护士专门负责接待病人。你去看病,找到护士说我要看病,护士检查3个医生的空闲情况,哦,A医生排起3个病人了,C医生也有2个病人了,B医生没病人,你去B医生那里吧。医生就是服务资源,护士就是反向代理,病人就是负载。负载均衡就是让服务的资源能够平衡的使用。反向代理就是为了实现负载均衡。
反向代理由很多种调度算法,比如最简单的,1个1个分配,第一个病人给A医生,第二个病人给B医生,第三个病人给C医生,第4个病人又给A医生...以此类推。还有很多其他算法,可以去了解一下。
为什么叫反向代理呢?如果你翻过墙,就知道翻墙是要靠代理服务器,我们连接代理服务器,代理服务器跳转到其他网站,这个可以理解为正向代理。而反向代理恰好相反。
可以简单的理解为正向代理,代理服务器在客户端。反向代理,代理服务器在服务器端。
另外反向代理不是只有nginx才能干,apache一样的可以做这个事情。
说得比较糙,按我自己的理解整理的,可能有不对的地方欢迎讨论。
负载均衡
首先说一下
负载均衡
,如果你的网站有大量的用户访问,一台服务器忙不过来,那么要多台服务器才行。但是用户肯定是通过一个地址去访问你的网站。你可以通过这个地址做一台负载均衡服务器,把请求平均分配给后台的多个应用服务器。
反向代理
那么如何通过一台负载均衡服务器将请求分配给后台的多个应用服务器,就可以通过
反向代理
来实现。
负载均衡服务器并不处理业务逻辑。用户的HTTP请求发给Nginx,Nginx再把请求发给后台的应用服务器,由它来处理请求,处理完成后,HTTP响应由应用服务器发给Nginx,最后发给客户端。这就是反向代理。Nginx只是一个桥梁,连接了客户端和应用服务器(如上图)。
PS:负载均衡可以通过反向代理来实现,但反向代理不是唯一的实现方式。同时,反向代理可以实现很多功能,并不只是负载均衡。
最后,给出我写的一篇博客,帮你入门Nginx:
http://xxgblog.com/2015/05/17/nginx-start/