http 請求中host欄位作用

2021-09-24 23:19:17 字數 1146 閱讀 3893

可以實現nginx虛擬伺服器

第一部分解析

目前很多乙個ip對應多個網域名稱的情況(nginx虛擬主機的實現原理),在http請求頭中有host欄位,該欄位預設為請求的url 也可以自己設定

當我們傳送乙個請求時,先通過dns網域名稱解析,得到ip,然後建立tcp連線,當伺服器(以nginx為例)收到請求時,就會解析http請求host欄位來判斷你是訪問的那個server配置下的**。nginx配置多個server。這樣 就可以實現在乙個伺服器上通過http的host欄位實現虛擬伺服器

第二部分解析

host 是 http 1.1 協議中新增的乙個請求頭,主要用來實現虛擬主機技術。

虛擬主機(virtual hosting)即共享主機(shared web hosting),可以利用虛擬技術把一台完整的伺服器分成若干個主機,因此可以在單一主機上執行多個**或服務。

第三部分解析

我們知道http請求頭資訊裡面會帶有乙個host欄位,很多人不是很清楚這個字段具體的作用或者用法,包括我被很多人問過也曾經有些迷茫,這裡具體掃盲下。

我們知道乙個ip位址可以對應多個網域名稱,比如假設我有這麼幾個網域名稱www.qiniu.com,www.taobao.com和www.jd.com然後在網域名稱提供商那通過a記錄或者cname記錄的方式最終都和我的虛擬機器伺服器ip 111.111.111.111關聯起來,那麼我通過任何乙個網域名稱去訪問最終解析到的都是ip 111.111.111.111。

但是還是沒有提到host的概念,其實可以這樣看,我們的那台虛擬機器111.111.111.111上面其實是可以放很很多**的(不然如果只能放乙個**的話就太不合理了,虛擬機器那麼多資源都浪費了),我們可以把www.qiniu.com,www.taobao.com和www.jd.com這些**都假設那台虛擬機器上面,但是這樣會有乙個問題,我們每次訪問這些網域名稱其實都是解析到伺服器ip 111.111.111.111,我怎麼來區分每次根據網域名稱顯示出不同的**的內容呢,其實這就要用到請求頭中host的概念了,每個host可以看做是我在伺服器111.111.111.111上面的乙個站點,每次我用那些網域名稱訪問的時候都是會解析同乙個虛擬機器沒錯,但是我通過不同的host可以區分出我是訪問這個虛擬機器上的哪個站點。

可以檢視:

HTTP中的Host欄位

說白了,http還是tcp協議,所以發起http請求也就是建立tcp連線並傳送的過程,也就是說connect send。tcp在connect的時候必須要知道對方我ip位址和監聽埠。比如我們要發起對www.baidu.com的請求,那第一步就是得到www.baidu.com對應的ip位址,然後con...

HTTP中的Host欄位

說白了,http還是tcp協議,所以發起http請求也就是建立tcp連線並傳送的過程,也就是說connect send。tcp在connect的時候必須要知道對方我ip位址和監聽埠。比如我們要發起對www.baidu.com的請求,那第一步就是得到www.baidu.com對應的ip位址,然後con...

HTTP請求頭host解析

host 網域名稱 host表示請求的伺服器 request headers中的host欄位 例如有user.xiaoqiang.com,hotel.xiaoqiang.com 現在需要登入後去請求hotel.xiaoqiang.com的資料。在通過user.xiaoqiang.com login....