代理web
單個客戶端專用的代理稱爲私有代理,衆多客戶端共享的代理被稱爲公共代理瀏覽器
代理與網關的對比:代理鏈接的是兩個或多個使用相同協議的應用程序,而網關鏈接的則是兩個或多個使用不一樣協議的端點。網關扮演的是「協議轉換器」的角色,即便客戶端和服務器使用的是不一樣的協議,客戶端也能夠經過它完成與服務器之間的事務處理。緩存
爲何使用代理安全
代理服務器能夠看到並接觸到全部流過的HTTP流量,因此代理能夠監視流量並對其進行修改,以實現不少有用的增值Web服務,好比兒童過濾器,文檔訪問控制,安全防火牆,web緩存,反向代理,內容路由器,轉碼器,匿名者。服務器
反向代理網絡
代理能夠假扮Web服務器。這些被稱爲替代物或反向代理的代理接收發給Web服務器的真實請求,但與Web服務器不一樣的是,它們能夠發起與其它服務器的通訊,以便按需定位所請求的內容。分佈式
能夠用這些反向代理來提升訪問慢速Web服務器上公共內容時的性能。在這種配置中,一般將這些反向代理稱爲服務器加速器。還能夠將替代物與內容路由功能配合使用,以建立按需複製內容的分佈式網絡。性能
四種常見方式可使客戶端流量流向代理:ui
修改客戶端:若是將客戶端配置爲使用代理服務器,客戶端就會將HTTP請求有意地直接發送給代理,而不是原始服務器;代理
修改網絡:依賴於監視HTTP流量的交換設備及路由設備,在客戶端絕不知情的狀況下,對其進行攔截,並將流量導入一個代理。這種代理被稱爲攔截代理。
修改DNS的命名空間:
修改Web服務器:能夠將某些Web服務器配置爲向客戶端發送一條HTTP重定向命令(響應碼爲305),將客戶端請求重定向到一個代理上去。收到重定向命令後,客戶端會與代理進行通訊
客戶端代理的設置
手工配置:顯式地設置要使用的代理。
預先配置瀏覽器:瀏覽器廠商或發行商會在將瀏覽器發送給其客戶以前預先對瀏覽器的代理設置進行手工配置。
代理的自動配置:提供一個URI,指向一個用JavaScript語言編寫的代理自動配置文件;客戶端會取回這個JavaScript文件,並運行它以決定是否應該使用一個代理,若是是的話,應該使用哪一個代理服務器;
WPAD的代理髮現:
有些瀏覽器支持Web代理自動發現協議,這個協議會自動檢測出瀏覽器能夠從哪一個「配置服務器」下載到一個自動配置文件。
URI的客戶端自動擴展和主機名解析
沒有代理時URI的解析:沒有提供顯式的代理時,瀏覽器會對部分主機名進行自動擴展。
有顯式代理時URI的解析:使用顯式代理時,用戶的URI會被直接發送給代理,因此瀏覽器就再也不執行全部這些便捷的擴展功能了。有些代理會盡力嘗試着去模仿瀏覽器的便捷服務,包括www...com自動擴展,以及添加本地域名後綴。
追蹤報文:
隨着代理的逐漸流行,咱們要可以追蹤通過代理的報文流,以檢測出各類問題,其重要性就跟追蹤通過不一樣交換機和路由器傳輸的IP分組流同樣。能夠經過Via首部和Track方法。
代理認證:
代理能夠做爲訪問控制設備使用。HTTP定義了一種名爲代理認證的機制,這種機制能夠阻止對內容的請求,直到用戶向代理提供了有效的訪問權限證書爲止。對受限內容的請求到達一臺代理服務器時,代理服務器能夠返回一個要求使用訪問證書的407 Proxy Authorization Required狀態碼。
代理的互操做性
Options:發現對可選特性的支持,經過使用Options,客戶端能夠在與服務器進行交互以前,肯定服務器的能力,這樣它就能夠方便地與具有不一樣特性的代理和服務器進行互操做了。Http/1.1在響應中惟一指定的首部字段是Allow首部,這個首部用於描述服務器所支持的各類方法(或者服務器上的特定資源).Options容許在可選的響應主體包含更多的信息,但並無對這種用法進行定義。