最近有打算研讀nginx原始碼,看到網路上介紹nginx可以作為一個反向代理伺服器完成負載平衡。所以搜羅了一些關於反向代理伺服器的內容,整理綜合。
反向代理程式(Reverse Proxy)方式是指以代理伺服器來接受網路上的連線要求,然後將請求轉送給內部網路上的伺服器;並將從伺服器上得到的結果傳回給Internet上請求連線的客戶端,此時代理伺服器對外就表現為一個伺服器。
通常的代理伺服器,只用於代理內部網路對Internet的連線請求,客戶機必須指定代理伺服器,並將本來要直接傳送到Web伺服器上的http請求傳送到代理伺服器。當一個代理伺服器能夠代理外部網路上的主機,存取內部網路時,這種代理服務的方式稱為反向代理服務。
實作反向代理伺服器通常有兩種模型,它可以作為內容伺服器的替身,也可以作為內容伺服器叢集的負載平衡器。
作內容伺服器的替身
# 。代理伺服器作為內容伺服器的替身。當外部客戶機嘗試存取內容伺服器時,會將其送到代理伺服器。實際內容位於內容伺服器上,在防火牆內部受到安全保護。代理伺服器位於防火牆外部,在客戶機看來就像是內容伺服器。 當客戶機向網站提出請求時,請求將轉到代理伺服器。然後,代理伺服器透過防火牆中的特定通路,將客戶機的請求傳送到內容伺服器。內容伺服器再透過該通道將結果回傳給代理伺服器。代理伺服器將檢索到的資訊傳送給客戶機,好像代理伺服器就是實際的內容伺服器。如果內容伺服器傳回錯誤訊息,代理伺服器會先行截取該訊息並更改標頭中列出的任何 URL,然後再將訊息傳送給用戶端。如此可防止外部客戶機取得內部內容伺服器的重新導向URL。 這樣,代理伺服器就在安全資料庫和可能的惡意攻擊之間提供了另一個屏障。與有權存取整個資料庫的情況相對比,就算是僥倖攻擊成功,作惡者充其量也僅限於存取單一事務中所涉及的資訊。未經授權的使用者無法存取到真正的內容伺服器,因為防火牆通路只允許代理伺服器有權進行存取。作為內容伺服器的負載平衡器
可以在一個組織內使用多個代理伺服器來平衡各 Web 伺服器間的網路負載。在此模型中,可以利用代理伺服器的快取特性,建立一個用於負載平衡的伺服器池。此時,代理伺服器可以位於防火牆的任意一側。如果 Web 伺服器每天都會接收大量的請求,則可以使用代理伺服器分擔 Web 伺服器的負載並提高網路存取效率。 對於客戶機發送到真正伺服器的請求,代理伺服器扮演中間調停者的角色。代理伺服器會將所請求的文件存入高速緩存。如果有不只一個代理伺服器,DNS 可以採用「循環複用法」來選擇其 IP 位址,隨機地為請求選擇路由。客戶機每次都使用同一個 URL,但請求所採取的路由每次都可能經過不同的代理伺服器。 可以使用多個代理伺服器來處理對一個高用量內容伺服器的請求,這樣做的好處是內容伺服器可以處理更高的負載,並且比其獨自工作時更有效率。在初始啟動期間,代理伺服器首次從內容伺服器檢索文檔,此後,對內容伺服器的請求數會大大下降。 更多Nginx相關技術文章,請造訪Nginx使用教學欄位進行學習!
以上是nginx怎麼實作反向代理的詳細內容。更多資訊請關注PHP中文網其他相關文章!