nginx反向代理與負載平衡到底是啥子聯絡?
反向代理就是後端服務不直接對外暴露,請求首先發送到nginx,然後nginx將請求轉發到後端伺服器,比如tomcat等.如果後端服務只有一台伺服器,nginx在這裡只有一個作用就是起到了代理後端服務接收請求的作用.稱之為反向代理.
可是在現實的應用場景中,一台後端伺服器出現單點故障的機率很大或者單台機器的吞吐量有限,無法承擔過多請求.這時候就需要在nginx後端配置多台伺服器,利用nginx內建的規則講請求轉發到後端不同的機器上.這時候就起到了負載平衡的作用.
當然我只是粗略一說,現實的架構遠遠比這個複雜.但對於明白這個區別已經夠了.
如果沒有反向代理,壓力直接放到單一的http server。而有了反向代理,典型情況下,一個ngnix做反向代理,後面有若干個http Server。所有的流量想到ngnix,這個東西依照配置的策略,或是輪換,或隨機或壓力分流,把流量導向給後面的Http server。從而達到負載平衡。
ngnix + node 的負載平衡 - SegmentFault - /a/1190000003023558
兩個東西:
反向代理: 應用伺服器不直接提供服務,透過nginx之類的http(s)伺服器處理請求根據不同的location(不同網域名稱、不同請求路徑等), 去不同的應用程式伺服器(Tomcat,Apache等)取得回應交給客戶端, 使用者看起來就像是這個nginx伺服器直接處理的請求一樣的。
負載平衡: 廣義上不僅指http伺服器層級的負載(最流行就是拿Nginx來做),也包括LVS這種起底與作業系統層級的最佳化處理,目的是為了確保應用伺服器快速回應的同時,不造成底層應用伺服器阻塞,更好的發揮它們的資料處理能力。
反向代理和負載平衡本來是兩個東西,不過nginx在反向代理的後端upstream這個地方實現了幾個常用的負載平衡的演算法而已。
反向代理就是後端服務不直接對外暴露,請求首先發送到nginx,然後nginx將請求轉發到後端伺服器,比如tomcat等.如果後端服務只有一台伺服器,nginx在這裡只有一個作用就是起到了代理後端服務接收請求的作用.稱之為反向代理.
可是在現實的應用場景中,一台後端伺服器出現單點故障的機率很大或者單台機器的吞吐量有限,無法承擔過多請求.這時候就需要在nginx後端配置多台伺服器,利用nginx內建的規則講請求轉發到後端不同的機器上.這時候就起到了負載平衡的作用.
當然我只是粗略一說,現實的架構遠遠比這個複雜.但對於明白這個區別已經夠了.
如果沒有反向代理,壓力直接放到單一的http server。而有了反向代理,典型情況下,一個ngnix做反向代理,後面有若干個http Server。所有的流量想到ngnix,這個東西依照配置的策略,或是輪換,或隨機或壓力分流,把流量導向給後面的Http server。從而達到負載平衡。
ngnix + node 的負載平衡 - SegmentFault - /a/1190000003023558
兩個東西:
反向代理: 應用伺服器不直接提供服務,透過nginx之類的http(s)伺服器處理請求根據不同的location(不同網域名稱、不同請求路徑等), 去不同的應用程式伺服器(Tomcat,Apache等)取得回應交給客戶端, 使用者看起來就像是這個nginx伺服器直接處理的請求一樣的。
負載平衡: 廣義上不僅指http伺服器層級的負載(最流行就是拿Nginx來做),也包括LVS這種起底與作業系統層級的最佳化處理,目的是為了確保應用伺服器快速回應的同時,不造成底層應用伺服器阻塞,更好的發揮它們的資料處理能力。
反向代理和負載平衡本來是兩個東西,不過nginx在反向代理的後端upstream這個地方實現了幾個常用的負載平衡的演算法而已。