看百度百科的說明完全不知其所以然,太抽象了,無法理解,希望各位前輩能指導下,謝謝
认证高级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一樣的可以做這個事情。
說得比較糙,照我自己的理解整理的,可能有不對的地方歡迎討論。