84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
Wenn ich mir die Erklärung in der Baidu-Enzyklopädie ansehe, weiß ich nicht, warum sie zu abstrakt und unverständlich ist. Vielen Dank
认证高级PHP讲师
首先说一下负载均衡,如果你的网站有大量的用户访问,一台服务器忙不过来,那么要多台服务器才行。但是用户肯定是通过一个地址去访问你的网站。你可以通过这个地址做一台负载均衡服务器,把请求平均分配给后台的多个应用服务器。
那么如何通过一台负载均衡服务器将请求分配给后台的多个应用服务器,就可以通过反向代理来实现。负载均衡服务器并不处理业务逻辑。用户的HTTP请求发给Nginx,Nginx再把请求发给后台的应用服务器,由它来处理请求,处理完成后,HTTP响应由应用服务器发给Nginx,最后发给客户端。这就是反向代理。Nginx只是一个桥梁,连接了客户端和应用服务器(如上图)。
PS:负载均衡可以通过反向代理来实现,但反向代理不是唯一的实现方式。同时,反向代理可以实现很多功能,并不只是负载均衡。
最后,给出我写的一篇博客,帮你入门Nginx:http://xxgblog.com/2015/05/17/nginx-start/
你写的 Web App 如果直接暴露给外网,外部请求稍微一多,就会处理不过来,新的请求完全得不相应,而且要面对很多复杂的网络问题(比如慢连接),这时候使用 Nginx 在中间接收外部请求,挡住不好的请求(超时,慢连接),有序转发给 Web App,这就是反向代理。
当请求很大的时候,你会启动多个服务器。这时候 Nginx 又可以将请求按照你定的规则,分发给不同的服务器(比如有两台服务器A和B,A 这时候忙碌,B 较空闲,就多分发一些请求给 B),这就是负载均衡。
假设医院有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/
你写的 Web App 如果直接暴露给外网,外部请求稍微一多,就会处理不过来,新的请求完全得不相应,而且要面对很多复杂的网络问题(比如慢连接),这时候使用 Nginx 在中间接收外部请求,挡住不好的请求(超时,慢连接),有序转发给 Web App,这就是反向代理。
当请求很大的时候,你会启动多个服务器。这时候 Nginx 又可以将请求按照你定的规则,分发给不同的服务器(比如有两台服务器A和B,A 这时候忙碌,B 较空闲,就多分发一些请求给 B),这就是负载均衡。
假设医院有3个医生给人看病,他们技术水平完全一样,一个护士专门负责接待病人。你去看病,找到护士说我要看病,护士检查3个医生的空闲情况,哦,A医生排起3个病人了,C医生也有2个病人了,B医生没病人,你去B医生那里吧。医生就是服务资源,护士就是反向代理,病人就是负载。负载均衡就是让服务的资源能够平衡的使用。反向代理就是为了实现负载均衡。
反向代理由很多种调度算法,比如最简单的,1个1个分配,第一个病人给A医生,第二个病人给B医生,第三个病人给C医生,第4个病人又给A医生...以此类推。还有很多其他算法,可以去了解一下。
为什么叫反向代理呢?如果你翻过墙,就知道翻墙是要靠代理服务器,我们连接代理服务器,代理服务器跳转到其他网站,这个可以理解为正向代理。而反向代理恰好相反。
可以简单的理解为正向代理,代理服务器在客户端。反向代理,代理服务器在服务器端。
另外反向代理不是只有nginx才能干,apache一样的可以做这个事情。
说得比较糙,按我自己的理解整理的,可能有不对的地方欢迎讨论。