用單臺虛擬主機實現(xiàn)多個域名
HTTP/1.1規(guī)范允許一臺HTTP服務(wù)器搭建多個Web站點.這是因為利用了虛擬主機(Virtual Host,又稱虛擬服務(wù)器)的功能.
即使物理層面只有一臺服務(wù)器,但只要使用虛擬主機的功能,則可以假想已具有多臺服務(wù)器.
如果一臺服務(wù)器內(nèi)托管了www.tricorder.jp和www.hackr.jp這兩個域名,當收到請求時就需要弄清楚究竟要訪問哪個域名.
在相同的IP地址下,由于虛擬主機可以寄存多個不同主機名和域名的Web網(wǎng)站,因此在發(fā)送HTTP請求時,必須在Host首部內(nèi)完整指定主機名或域名的URI.
通信數(shù)據(jù)轉(zhuǎn)發(fā)程序:代理,網(wǎng)關(guān),隧道
代理
代理是一種有轉(zhuǎn)發(fā)功能的應(yīng)用程序,它扮演了位于服務(wù)器和客戶端"中間人"的角色,接收由客戶端發(fā)送的請求并轉(zhuǎn)發(fā)給服務(wù)器,同時也接收服務(wù)器返回的響應(yīng)并轉(zhuǎn)發(fā)給客戶端.
代理不改變請求URI,會直接發(fā)送給前方持有資源的目標服務(wù)器.
持有資源實體的服務(wù)器被稱為源服務(wù)器.從源服務(wù)器返回的響應(yīng)經(jīng)過代理服務(wù)器后再傳給客戶端.
在HTTP通信過程中,可級聯(lián)多臺代理服務(wù)器.請求和響應(yīng)的轉(zhuǎn)發(fā)會經(jīng)過數(shù)臺類似鎖鏈一樣連接起來的代理服務(wù)器.轉(zhuǎn)發(fā)時,需要附加Via首部字段以標記經(jīng)過的主機信息.
使用代理服務(wù)器的理由有:
- 利用緩存技術(shù)減少網(wǎng)絡(luò)帶寬的流量
- 組織內(nèi)部針對特定網(wǎng)站的訪問控制
- 以獲取訪問日志為主要目的
- 等等.
代理有多種使用方法,按兩種基準分類.一種是是否使用緩存,另一種是是否會修改報文.
緩存代理
代理轉(zhuǎn)發(fā)響應(yīng)時,緩存代理(Cache Proxy)會預(yù)先將資源的副本(緩存)保存在代理服務(wù)器上.
當代理再次接收到相同資源的請求時,就可以不從源服務(wù)器那里獲取資源,而是將之前緩存的資源作為響應(yīng)返回.
透明代理
轉(zhuǎn)發(fā)請求或響應(yīng)時,不對報文做任何加工的代理類型被稱為透明代理(Transparent Proxy).反之,對報文內(nèi)容進行加工的代理被稱為非透明代理.
網(wǎng)關(guān)
網(wǎng)關(guān)是轉(zhuǎn)發(fā)其他服務(wù)器通信數(shù)據(jù)的服務(wù)器,接收從客戶端發(fā)送來的請求時,它就像自己擁有資源的源服務(wù)器一樣對請求進行處理.有時客戶端可能都不會察覺,自己的通信目標是一個網(wǎng)關(guān).
網(wǎng)關(guān)的工作機制和代理十分相似.而網(wǎng)關(guān)能使通信線路上的服務(wù)器提供非HTTP協(xié)議服務(wù).
利用網(wǎng)關(guān)能提高通信的安全性,因為可以在客戶端與網(wǎng)關(guān)之間的通信線路上加密以確保連接的安全.比如,網(wǎng)關(guān)可以連接數(shù)據(jù)庫,使用SQL語句查詢數(shù)據(jù)庫.另外,在Web購物網(wǎng)站上進行信用卡結(jié)算時,網(wǎng)關(guān)可以和信用卡結(jié)算系統(tǒng)聯(lián)動.
隧道
隧道是在相隔甚遠的客戶端和服務(wù)器兩者之間進行中轉(zhuǎn),并保持雙方通信連接的應(yīng)用程序.
隧道的目的是確保客戶端能與服務(wù)器進行安全的通信.
隧道本身不會去解析HTTP請求.也就是說,請求保持原樣中轉(zhuǎn)給之后的服務(wù)器.隧道會在通信雙方斷開連接時結(jié)束.
保存資源的緩存
緩存是指代理服務(wù)器或客戶端本地磁盤內(nèi)保存的資源副本.利用緩存可減少對源服務(wù)器的訪問,因此也就節(jié)省了通信流量和通信時間.
緩存服務(wù)器是代理服務(wù)器的一種,并歸類在緩存代理類型中.換句話說,當代理轉(zhuǎn)發(fā)從服務(wù)器返回的響應(yīng)時,代理服務(wù)器將會保存一份資源的副本.
緩存服務(wù)器的優(yōu)勢在于利用緩存可避免多次從源服務(wù)器轉(zhuǎn)發(fā)資源.因此客戶端可就近從緩存服務(wù)器上獲取資源,而源服務(wù)器也不必多次處理相同的請求了.
緩存的有效期限
即使存在緩存,也會因為客戶端的要求,緩存的有效期等因素,向源服務(wù)器確認資源的有效性.若判斷緩存失效,緩存服務(wù)器將會再次從源服務(wù)器上獲取"新"資源.