什麼是反向代理與負載平衡— 什麼是反向代理
我們有時候,用自己的電腦A想訪問國外的某個網站B,但是訪問不了,此時,有一台中間伺服器C可以訪問國外的網站B,那麼,我們可以用自己的電腦訪問伺服器C,透過C來訪問B這個網站。那麼這個時候,伺服器C稱為代理伺服器,這種存取方式叫做正向代理。正向代理有一個特點,就是我們明確知道要造訪哪個網站。再如,當我們有一個伺服器集中,並且伺服器叢集中的每台伺服器的內容一樣的時候,同樣我們要直接從個人電腦訪問到伺服器集中的伺服器的時候無法訪問,且此時第三方伺服器能訪問集群,這個時候,我們透過第三方伺服器存取伺服器集群的內容,但是此時我們並不知道是哪一台伺服器提供的內容,此時的代理方式稱為反向代理。
當一台伺服器的單位時間內的訪問量越大的時候,伺服器的壓力會越大。當一台伺服器壓力大得超過自身的承受能力的時候,伺服器會崩潰。為了避免伺服器崩潰,讓使用者有更好地體驗,我們通常透過負載平衡的方式來分擔伺服器的壓力。那什麼是負載平衡呢?是這樣,我們可以建立很多很多個伺服器,這些伺服器組成一個伺服器集群,然後,當使用者造訪我們網站的時候,先訪問一個中間伺服器,再讓這個中間伺服器在伺服器集群中選擇一個壓力較小的伺服器,然後將該存取請求引入該選擇的伺服器。這樣,用戶的每次訪問,都會保證伺服器叢集中的每個伺服器的壓力趨於平衡,分擔了伺服器壓力,避免了伺服器崩潰的情況。
Nginx負載平衡的實現
Nginx是一款可以透過反向代理實現負載平衡的伺服器,使用Nginx服務實現負載平衡的時候,用戶的存取首先會存取到Nginx伺服器,然後Nginx伺服器再從伺服器叢集表中選擇壓力較小的伺服器,然後將該存取請求引向該伺服器。若伺服器叢集中的某個伺服器崩潰,那麼從待選伺服器清單中將該伺服器刪除,也就是說伺服器假如崩潰了,那麼Nginx就肯定不會將存取要求引入該伺服器了。
HTTP Upstream模組
Upstream模組是Nginx伺服器的一個重要模組。 Upstream模組實作在輪詢和客戶端ip之間實現後端的負載平衡。常用的指令有ip_hash指令、server指令和upstream指令等,下面我們分別來講一下。
在負載平衡系統中,假如用戶在某台伺服器上登錄,那麼如果該用戶第二次請求的時候,因為我們是負載平衡系統,每次請求都會重新定位到伺服器叢集中的一個伺服器,那麼此時如果將已經登入伺服器A的用戶再定位到其他伺服器,顯然不妥。故而,我們可以採用ip_hash指令解決這個問題,如果客戶端請求已經訪問了伺服器A並登錄,那麼第二次請求的時候,會將該請求透過哈希演算法自動定位到該後端伺服器中。下面我們透過實例講解。
server指令主要用於指定伺服器的名稱和參數。下面我們透過實例講解。
upstream指令主要是用來設定一組可以在proxy_pass和fastcgi_pass指令中使用額代理伺服器,預設負載平衡方式為輪詢。
ip_hash指令
以上就介紹了Nginx的反向代理與負載平衡,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。