直給,上乾貨,硬核代理解析,請拿走!
【代理】
首先我們要知道,代理是什麽意思呢?
代理是一個多義詞,具體含義取決於上下文。以下是代理的三種含義總結:
一、在法律領域:
代理是指代理人以被代理人(又稱本人)的名義,在代理權限內與第三人(又稱相對人)實施民事行為,其法律後果直接由被代理人承受的民事法律制度。
代理包括委托代理和法定代理。
委托代理是當事人聘請代理進行訴訟活動。
法定代理是根據法律規定而產生的一種代理關系,例如在未成年人案件中,法律會指定特定的代理人代表未成年人進行訴訟活動。
二、在計算機領域:
代理,泛指中間傳輸web服務器,充當著用戶和目標服務器之間的中介。
代理(英語:Proxy)也稱網絡代理,是一種特殊的網絡服務。
它允許一個網絡終端(一般為客戶端),通過這個服務,與另一個網絡終端(一般為服務器)進行非直接的連接。
三、在其他領域:
代理還可以指受委托,代表當事人,進行某種活動,如訴訟、納稅、簽訂合同等。
【Java代理】
而在Java中的代理,是指一種設計模式,即代理模式(Proxy Pattern)。
代理模式,是23種Java常用設計模式之一。
一、定義:
對其它對象提供一種代理,用以控制對這個對象的訪問。
二、作用:
代理模式的主要作用是:
為其它對象提供一種代理,以控制對這個對象的訪問。
在某些情況下,一個對象不想或者不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。
三、內核:
代理模式的思想內核,是為了提供額外的處理,或者不同的操作,而在實際對象與調用者之間,插入一個代理對象。
這些額外的操作,通常需要與實際對象進行通信。
在這種模式中,代理對象充當目標對象和客戶端之間的中介,可以提供額外的操作或監控功能。
四、靜態代理與動態代理
代理模式,可以分為靜態代理和動態代理兩種。
在靜態代理中,代理類和目標類在編譯時就被確定,它們實現相同的接口。
在動態代理中,代理類是在運行時通過反射機制生成的,這種實現方式更靈活,可以在不修改原有代碼的基礎上對方法進行功能增強。
代理模式的應用場景,包括保護對象不被直接修改、增強功能或實現對象間的通信。
【正反代理】
一、正向代理
正向代理,是一種位於客戶端和目標服務器之間的網絡代理。
主要功能是代表客戶端與目標服務器通信。
當客戶端想要訪問某個網站時,它會先向正向代理服務器發送請求,並指定目標網站。
然後,正向代理服務器會向目標網站發送相同的請求,並獲取響應。
最後,正向代理服務器將從目標網站獲得的響應數據返回給客戶端。
這種代理方式可以隱藏客戶端的真實身份和位置信息,使客戶端能夠訪問通常無法直接訪問的網站,例如被封鎖的網站。
此外,正向代理還可以提供緩存服務,加速網絡請求,並增強網絡訪問的安全性。
二、反向代理
反向代理,是位於用戶與目標服務器之間的一種代理服務。
但它是代表目標服務器來處理請求的。
具體來說:
1、當用戶發出請求時,這些請求首先會到達反向代理服務器,而不是直接發送到目標服務器。
2、反向代理會根據一定的規則(如負載均衡策略)將用戶的請求轉發到後端的一組或多組服務器上進行處理。
3、處理完成後,後端服務器會將結果返回給反向代理,再由反向代理將這些結果轉發回給用戶。
三、正向代理和反向代理的區別
1、用途不同
正向代理的典型用途是為在防火牆內的局域網客戶端提供訪問的途徑。反向代理的典型用途是將防火牆後面的服務器提供給用戶訪問。
2、目的不同
正向代理,實際代理的是客戶端。
而反向代理,實際代理的是目標服務器。
3、代理架構不同
正向代理是客戶端架構,而反向代理是服務器架構。
4、服務對象不同
正向代理中,服務器不知道真正的用戶是誰。
反向代理中,用戶不知道真正的服務器是誰。
四、正向代理的典型VPN
VPN(Virtual Private ,虛擬專用網絡)確實可以被視為一種典型的正向代理。
正向代理,是指位於客戶端和原始服務器(origin server)之間的服務器。
它代表客戶端向原始服務器發送請求並獲取內容,然後將這些內容返回給客戶端。
VPN的工作原理正是如此。
它為用戶的網絡請求提供代理服務,使得用戶可以通過VPN安全地訪問各種網站和服務。
同時隱藏用戶的真實IP地址,保護用戶的隱私和網絡安全。
五、反向代理的代表Nginx
實際上, Nginx既可以作為正向代理,也可以作為反向代理。
以下是兩種代理模式的具體介紹:
1、正向代理
在這種模式下,客戶端(用戶)明確知道他們想要訪問的數據資源位於哪個服務器上,但客戶端無法直接訪問那個服務器。
因此,客戶端通過一個代理服務器來訪問目標服務器。
代理服務器充當了客戶端和目標服務器之間的中間層,負責將客戶端的請求轉發給目標服務器,並將目標服務器的響應返回給客戶端。
2、反向代理
在這種模式下,客戶端通常不知道他們正在與反向代理服務器通信,而是認為他們直接與後端服務器通信。
反向代理服務器接受客戶端的請求,並將這些請求轉發給後端服務器。
後端服務器處理請求並返回響應,反向代理服務器再將響應返回給客戶端。
在這種模式下,客戶端對代理是無感知的,因為客戶端不需要進行任何額外的配置就可以訪問。
另外,Nginx不僅支持這兩種代理模式,還可以用作負載均衡器、緩存服務器和電子郵件代理服務器等。
……
以上,就是關於代理,Java中的代理,正反代理的定義、區別、典型代表的總結了。
理解它,掌握它,會讓你在今後的IT程序員開發工作中,一路砍瓜切菜,所向披靡的。
So,你get到%多少了?
(——本章玩——)
(評論、關注、收藏,一鍵三連可好?)