理解什麼是正向代理?反向代理?

上一篇文章介紹的是《通過NGINX反向代理實現多個域名站點複用一個公網IP》的講解和實戰。那麼這篇文章想跟大家再進一步分享一下,我對反向代理及負載均衡的理解。

  • 什麼是正向代理,什麼是反向代理?

首先“反向代理”是相對於“正向代理”而言的,有朋友會問這個反向代理到底是怎麼個反向法?大家在公司裡面,如果公司對於上網管控比較嚴格的話,通常在內網裡是不能通過路由的方式直接上網的,公司的網管會要求你必須設置代理服務器(瀏覽器或微信客戶端網絡設置選項裡)來訪問互聯網,可能要需要進行賬戶密碼的驗證。所謂代理,就比如你要上www.163.com這個網站,你瀏覽器的請求並不是直接與163.com去建立連接的,而是跟你的代理服務器去建立連接請求,然後你的代理服務器再代替你去跟www.163.com建立請求連接,最後網站把請求結果的頁面返回給代理服務器,代理服務器再把頁面返回給你。這種“從內到外”的訪問路徑,就是正向代理了。

理解什麼是正向代理?反向代理?

正向代理

那麼反向代理就很好理解了,它是相對於正向代理的“從內到外”而言的,反向代理的訪問路徑則是“從外到內”。反向代理的使用場景通常是,如果你有一臺web服務器,想提供互聯網用戶訪問,然後出於安全考慮你不想讓你的web服務器直接暴露在公網,又或者你的web服務器不是一臺而是幾臺服務器組成的一個集群,那麼這個時候你就會考慮部署反向代理服務器順便實現對web集群多臺服務器的負載均衡。整個訪問流程跟正向代理一致,假如你的網站域名是www.aaa.com,當用戶通過瀏覽器訪問你這個站點時,實際上是跟你的反向代理服務器建立的三次握手連接,再由反向代理服務器再跟後端的web服務器進行建立請求連接,後端web服務器響應請求結果給反向代理,再由反向代理服務器把結果返回給用戶。

理解什麼是正向代理?反向代理?

反向代理


  • 反向代理跟負載均衡的區別?

對於個人理解而言,如果你的代理服務器後端只對應了一臺應用服務器,那麼這種場景就可以簡單的叫做反向代理。而如果你的代理服務器後端配置的是一組多臺的服務器集群,那麼再結合反向代理服務器的負載均衡算法如輪詢、最小連接數、權重等等來分發用戶的請求到集群不同的服務器上,那這個就可以叫做負載均衡了。如常見的F5、A10、LVS、HAproxy、Nginx等軟硬件產品都是具備負載均衡功能的。

  • 四層代理跟七層代理

如果公司裡面有用F5負載均衡設備的朋友可能清楚,在做VirtualServer配置的時候需要選擇模式,常用的有“performance L4”和“Standard”兩種。這兩種模式的區別就是,performance layer4是四層代理,而Standard是七層代理。那麼四層代理跟七層代理又有什麼區別呢?下面這2張圖可以清楚的展現出來兩者的差別:

理解什麼是正向代理?反向代理?

四層代理模式


理解什麼是正向代理?反向代理?

七層代理模式

從上圖可以看出,四層代理模式,對於負載均衡設備來說,只負責連接的請求轉發,不改變TCP連接的任何參數,由客戶端與後端服務器自行協商TCP參數。而七層代理模式,則是真正意義上的“代理”模式了,客戶端和後端服務器的TCP連接是完全獨立的,分別都是與負載均衡設備進行協商。另外一個主要區別就是,四層代理主要是根據IP+PORT來轉發的,七層代理則可以根據應用層http的屬性來轉發,能夠更加靈活的處理報文。當然了,七層代理由於是拆開更高層的包來做處理,相對於四層代理來說則會更加的消耗性能。

以上,就是本次分享的內容。


分享到:


相關文章: