1 單臺虛擬機實現多個域名
一臺HTTP服務器可使用虛擬機(Virtual Host)搭建多個Web站點。
在互聯網上,域名通過DNS服務映射到IP地址(域名解析)之後訪問目標網站。當請求發送到服務器時,已經是以IP地址形式訪問了。
在相同的IP地址下,由於虛擬主機可以寄存多個不同主機名和域名的Web網站,因此發送HTTP請求時,必須在Host首部內完整指定主域名的URI。
2 通訊數據轉發程序
2.1 代理
代理是一種有轉發功能的應用程序。扮演了位於服務器和客戶端”中間人“的角色。
代理服務器的基本行爲就是接收客戶端發送的請求後轉發給其他服務器。
每次通過代理服務器轉發請求或響應時,會追加寫入Via首部信息。
GET / HTTP1.1 | GET / HTTP1.1 Via:proxy1 |
GET / HTTP1.1 Via:proxy2,proxy1 |
||||
客戶端 | ————》 《———— |
代理服務器 proxy1 |
————》 《———— |
代理服務器 proxy2 |
————》 《———— |
源服務器 |
HTTP/1.1 200 OK Via:proxy2,proxy1 |
HTTP/1.1 200 OK Via:proxy2 |
HTTP/1.1 200 OK |
使用代理的理由:
- 利用緩存技術較少網絡帶寬的流量;
- 組織內部針對特定網站的訪問控制,以獲取訪問日誌爲主要目的;
- 等等
代理的使用方法分2類:
- 是否使用緩存;
- 是否會修改報文。
2.1.1 緩存代理
代理轉發響應時,緩存代理(Caching Proxy)會預先將資源的副本(緩存)保存在代理服務器上。
當代理再次接收到對相同資源的請求時,就可以不從源服務器那裏獲取資源,而是將之前緩存的資源作爲響應返回。
2.1.2 透明代理
轉發請求或響應時,不對報文做任何加工的代理類型被稱爲透明代理(Transparent Proxy);反之,對報文內容進行加工的代理被稱爲非透明代理。
2.2 網關
網關是轉發其他服務器通信數據的服務器,接收從客戶端發送來的請求時,它就像自己擁有資源的源服務器一樣對請求進行處理。
網關工作機制和代理很相似,而網關能使通信線路上的服務器提供非HTTP協議服務。
利用網關能提高通信的安全性,可以在客戶端與網關之間的通信線路上加密以確保連接的安全。
2.3 隧道
隧道是在相隔甚遠的客戶端和服務器兩者之間進行中轉,並保持雙方通信連接的應用程序。
隧道的目的是確保客戶端能服務器進行安全的通信。
隧道本身不回去解析HTTP請求。
3 保存資源的緩存
緩存時至代理服務器或客戶端本地磁盤內保存的資源副本。利用緩存可減少對源服務器的訪問,因此節省了通信流量和通信時間。
緩存服務器時代理服務器中的一種。當代理轉發從服務器返回的響應時,代理服務器將會保存一份資源的副本。
3.1 緩存的有效期限
若緩存過期,需要向源服務器確定資源的有效性,若緩存失效,會再次請求獲取新資源。
3.2 客戶端的緩存
緩存不僅可以存在與緩存服務器內,還可以存在客戶端瀏覽器中。在IE中,會把客戶端緩存稱爲臨時網絡文件(Temporary Internet File)。
瀏覽器緩存如果有效,就不必再向服務器請求相同的資源了,可以直接從本地磁盤內獲取。