一臺web服務器可搭建多個獨立域名的web網(wǎng)站,也可作為通信路徑上的中轉(zhuǎn)服務器提升傳輸效率。
一、用單臺虛擬主機實現(xiàn)多個域名
HTTP/1.1規(guī)范允許一臺HTTP服務器搭建多個web站點。
即使物理層面只有一臺服務器,但只要使用虛擬主機的功能,則可以假想已具有多臺服務器。
在互聯(lián)網(wǎng)上,域名通過DNS服務映射到IP地址(域名解析)之后訪問目標網(wǎng)站??梢?,當請求發(fā)送到服務器時,已經(jīng)是以IP地址形式訪問了。
![](/d/20211016/728e8f0ecf36cdfc9651f609c854b7f6.gif)
所以,如果一臺服務器內(nèi)托管了www.tricorder.jp和www.hackr.jp這兩個域名,當收到請求時就需要弄清楚究竟要訪問哪個域名。
![](/d/20211016/f2d311d16d84c13a9544bed9b140e01e.gif)
![](/d/20211016/ac013aad389233a83144d34469a98fd7.gif)
在相同的IP地址下,由于虛擬主機可以寄存多個不同主機名和域名的web網(wǎng)站,因此在發(fā)送HTTP請求時,必須在Host首部內(nèi)完整指定主機名或域名的URI。
二、通信數(shù)據(jù)轉(zhuǎn)發(fā)程序:代理、網(wǎng)關(guān)、隧道
這些應用程序和服務器可以將請求轉(zhuǎn)發(fā)給通信線路上的下一站服務器,并且接收從那臺服務器發(fā)送的響應再轉(zhuǎn)發(fā)給客戶端。
①代理:代理服務器的基本行為就是接收客戶端發(fā)送的請求后轉(zhuǎn)發(fā)給其他服務器。代理不改變請求URI,會直接發(fā)送給前方持有資源的目標服務器。持有資源實體的服務器被稱為源服務器。從源服務器返回的響應經(jīng)過代理服務器后再傳給客戶端。
![](/d/20211016/4f770f6b94d62b5edad51045b6749bc3.gif)
使用代理服務器的理由有:利用緩存技術(shù)減少網(wǎng)絡帶寬的流量,組織內(nèi)部針對特定網(wǎng)站的訪問控制,以獲取訪問日志為主要目的等等。
代理有多種使用方法:
緩存代理:
代理轉(zhuǎn)發(fā)響應時,緩存代理會預先將資源的副本保存在代理服務器上。當代理再次接收到對相同資源的請求時,就可以不從源服務器那里獲取資源,而是將之前緩存的資源作為響應返回。
透明代理:
轉(zhuǎn)發(fā)請求或響應時,不對報文做任何加工的代理類型被稱為透明代理。反之,對報文內(nèi)容進行加工的代理被稱為非透明代理。
②網(wǎng)關(guān):網(wǎng)關(guān)的工作機制和代理十分相似。而網(wǎng)關(guān)能使通信線路上的服務器提供非HTTP協(xié)議服務。利用網(wǎng)關(guān)能提供通信的安全性,因為可以在客戶端與網(wǎng)關(guān)之間的通信線路上加密以確保連接的安全。
③隧道:隧道可按要求建立起一條與其他服務器的通信線路,屆時使用SSL等加密手段進行通信。隧道的目的是確保客戶端能與服務器進行安全通信。
隧道本身不會去解析HTTP請求。也就是說,請求保持原樣中轉(zhuǎn)給之后的服務器。隧道會在通信雙方斷開連接時結(jié)束。
![](/d/20211016/6b43aaaa2c9098ca36781db729dbd458.gif)
三、保存資源的緩存
緩存是指代理服務器或客戶端本地磁盤內(nèi)保存的資源副本。利用緩存可減少對服務器的訪問,因此也就節(jié)省了通信流量和通信時間。
緩存服務器是代理服務器的一種,并歸類在緩存代理類型中。
![](/d/20211016/88e5692a33ba1a7ceed3c20ac8080b96.gif)
①緩存的有效期限
②客戶端的緩存