天天看點

《圖解HTTP》筆記——與HTTP協作的Web伺服器(第5章)

用單台虛拟主機實作多個域名

HTTP/1.1規範允許一台HTTP伺服器搭建多個Web站點。比如,提供Web托管服務的供應商,可以用一台伺服器為多位客戶服務,也可以每位客戶持有的域名運作各自不同的網站。這是利用了虛拟主機(Virtual Host,又稱虛拟伺服器)的功能。即使實體層面隻有一台伺服器,但隻要使用虛拟主機的功能,則可以假想已具有多台伺服器。

在網際網路上,域名通過DNS服務映射到IP位址(域名解析)之後通路目标網站。可見,當請求發送到伺服器時,一件事以IP位址形式通路了。是以,如果一台伺服器内托管了兩個域名,當收到請求時就需要弄清楚究竟要通路哪個域名。

《圖解HTTP》筆記——與HTTP協作的Web伺服器(第5章)

在相同IP位址下,由于虛拟機可以寄存多個不同主機名和域名的Web網站,是以在發生HTTP請求時,必須在Host首部内完整指定主機名或域名的URI。

通信資料轉發程式:代理、網管、隧道

HTTP通信時,除用戶端和伺服器以外,還有一些用于通信資料轉發的應用程式,例如代理、網關和隧道。這些應用程式和伺服器可以将請求轉發給通信線路上的下一站伺服器,并且能接收從那台伺服器發送的響應再轉發給用戶端。

(1)代理

代理是一種有轉發功能的應用程式,它扮演了位于伺服器和用戶端“中間人”的角色,接收由用戶端發送的請求并轉發給伺服器,同時也接收伺服器傳回的響應并轉發給用戶端。

(2)網關

網關是轉發其他伺服器通信資料的伺服器,接收從用戶端發送來的請求時,它就像自己擁有資源的伺服器一樣對請求進行處理。有時用戶端可能都不會察覺,自己的通信目标是一個網關。

(3)隧道

隧道是在相隔甚遠的用戶端和伺服器兩者之間進行中轉,并保持雙方通信連結的應用程式。

一,代理

代理伺服器的基本行為就是接收用戶端發送的請求後轉發給其它伺服器。代理不改變請求URI,會直接發送給前方持有資源的目标伺服器。持有資源實體的伺服器被稱為源伺服器。從源伺服器傳回的響應經過代理伺服器後再傳給用戶端。

《圖解HTTP》筆記——與HTTP協作的Web伺服器(第5章)

在HTTP通信過程中,可級聯多台代理伺服器。請求和響應的轉發會經過數台類似鎖鍊一樣連結起來的代理伺服器。轉發時,需要附加Via首部字段以标記處經過的主機資訊。

使用代理伺服器的理由有:利用緩存技術建掃網絡帶寬的流量,組織内部針對特定網站的通路控制,以擷取通路日志未主要目的。

《圖解HTTP》筆記——與HTTP協作的Web伺服器(第5章)

代理有多種使用方法,按兩種基準分類。一種是是否使用緩存,另一種是是否會修改封包。

緩存代理:代理轉發響應時,緩存代理(Caching Proxy)會預先将資源的副本(緩存)儲存在代理伺服器上。當代理再次接收到對相同資源的請求時,就可以不從資源伺服器哪裡擷取資源,而是将之前緩存的資源作為響應傳回。

透明代理:轉發請求或響應時,不對封包做任何加工的代理類型被稱為透明代理(Transparent Proxy)。反之,對封包内容進行加工的代理稱為非透明代理。

二,網關

網關的工作機制和代理十分相似。而網關能使通信線路上的伺服器提供非HTTP協定服務。利用網關能提高通信的安全性,以為可以再用戶端與網關之間的通信線路上加密以確定連結的安全。比如,網關可以連結資料庫,使用SQL語句查詢資料。另外,在Web購物網站上進行信用卡結算時,網關可以和信用卡結算系統關聯。

三,隧道

隧道可按要求建立起一條與其他伺服器的通信線路,屆時使用SSL等加密手段進行通信。隧道的目的是確定用戶端能與伺服器端進行安全的通信。隧道本身不會去解析HTTP請求。也就是說,請求保持原樣中轉給之後的伺服器。隧道會在通信雙方斷開連接配接時結束。

儲存資源的緩存

緩存是指代理伺服器或用戶端本地磁盤内儲存的資源副本。利用緩存可減少對資源伺服器的通路,是以也就節省了通信流量和通信時間。緩存伺服器時代理伺服器的一種,并歸類在緩存代理類型中。換句話說,當代理伺服器轉發從伺服器傳回的響應時,代理伺服器将會儲存一份資源的副本。

緩存伺服器的優勢在于利用緩存可避免多次從源伺服器轉發資源。是以用戶端可就近從緩存伺服器上擷取資源,而源伺服器也不必多次處理相同的請求

緩存的有效期

即使緩存伺服器内有緩存,也不能保證每次都會傳回對同資源的請求。因為這關系到被緩存資源的有效性問題。即使存在緩存,也會因為用戶端的要求、緩存的有效期等因素,向資源伺服器确認資源的有效性。若判斷緩存失效,緩存伺服器将會再次從源伺服器上擷取“新”資源。

用戶端的緩存

緩存不僅可以 在緩存伺服器内,還可以存在用戶端浏覽器中。浏覽器緩存如果有效,就不必在向伺服器請求相同的資源,可以直接從本地磁盤内讀取。和緩存伺服器相同的一點是,當判定緩存過期後,會向源伺服器确認資源的有效性。若判斷浏覽器緩存失效,浏覽器會再次請求新資源。