請問什么叫反向代理和負載均衡額,關于Nginx的
問題描述
看百度百科的說明完全不知其所以然,太抽象了,無法理解,希望各位前輩能指導下,謝謝
問題解答
回答1:負載均衡首先說一下負載均衡,如果你的網站有大量的用戶訪問,一臺服務器忙不過來,那么要多臺服務器才行。但是用戶肯定是通過一個地址去訪問你的網站。你可以通過這個地址做一臺負載均衡服務器,把請求平均分配給后臺的多個應用服務器。
那么如何通過一臺負載均衡服務器將請求分配給后臺的多個應用服務器,就可以通過反向代理來實現。負載均衡服務器并不處理業務邏輯。用戶的HTTP請求發給Nginx,Nginx再把請求發給后臺的應用服務器,由它來處理請求,處理完成后,HTTP響應由應用服務器發給Nginx,最后發給客戶端。這就是反向代理。Nginx只是一個橋梁,連接了客戶端和應用服務器(如上圖)。
PS:負載均衡可以通過反向代理來實現,但反向代理不是唯一的實現方式。同時,反向代理可以實現很多功能,并不只是負載均衡。
最后,給出我寫的一篇博客,幫你入門Nginx:http://xxgblog.com/2015/05/17/nginx-start/
回答2:你寫的 Web App 如果直接暴露給外網,外部請求稍微一多,就會處理不過來,新的請求完全得不相應,而且要面對很多復雜的網絡問題(比如慢連接),這時候使用 Nginx 在中間接收外部請求,擋住不好的請求(超時,慢連接),有序轉發給 Web App,這就是反向代理。
當請求很大的時候,你會啟動多個服務器。這時候 Nginx 又可以將請求按照你定的規則,分發給不同的服務器(比如有兩臺服務器A和B,A 這時候忙碌,B 較空閑,就多分發一些請求給 B),這就是負載均衡。
回答3:假設醫院有3個醫生給人看病,他們技術水平完全一樣,一個護士專門負責接待病人。你去看病,找到護士說我要看病,護士檢查3個醫生的空閑情況,哦,A醫生排起3個病人了,C醫生也有2個病人了,B醫生沒病人,你去B醫生那里吧。醫生就是服務資源,護士就是反向代理,病人就是負載。負載均衡就是讓服務的資源能夠平衡的使用。反向代理就是為了實現負載均衡。反向代理由很多種調度算法,比如最簡單的,1個1個分配,第一個病人給A醫生,第二個病人給B醫生,第三個病人給C醫生,第4個病人又給A醫生...以此類推。還有很多其他算法,可以去了解一下。為什么叫反向代理呢?如果你翻過墻,就知道翻墻是要靠代理服務器,我們連接代理服務器,代理服務器跳轉到其他網站,這個可以理解為正向代理。而反向代理恰好相反。可以簡單的理解為正向代理,代理服務器在客戶端。反向代理,代理服務器在服務器端。
另外反向代理不是只有nginx才能干,apache一樣的可以做這個事情。
說得比較糙,按我自己的理解整理的,可能有不對的地方歡迎討論。
