溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Http Server API路由如何請(qǐng)求到web程序

發(fā)布時(shí)間:2021-12-30 09:08:32 來源:億速云 閱讀:141 作者:柒染 欄目:大數(shù)據(jù)

這篇文章給大家介紹Http Server API路由如何請(qǐng)求到web程序,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

引言

容器內(nèi)web程序一般會(huì)綁定到http://0.0.0.0:{某監(jiān)聽端口}http://+:{某監(jiān)聽端口},以確保使用容器IP可以訪問到web應(yīng)用。

正如我們?cè)贏SP.NET Core官方鏡像顯示的,ASP.NET Core程序在容器內(nèi)80端口監(jiān)聽請(qǐng)求

 

UrlPrefix

這里涉及一個(gè)不為人知的概念:UrlPrefix

UrlPrefix是統(tǒng)一資源定位符Url的前綴部分:scheme://host:port/relativeURI

  • "https://www.adatum.com:80/vroot/"
  • "https://adatum.com:443/secure/database/"
  • "http://+:80/vroot/"

web程序啟動(dòng)后,根據(jù)監(jiān)聽地址UrlPrefix中的主機(jī)元素,會(huì)向系統(tǒng)組件Http Server API注冊(cè)不同的路由桶,由Http Server API將接收的請(qǐng)求路由到合適的web程序。

容器內(nèi)web程序監(jiān)聽http://+:80地址,+ 是強(qiáng)通配符,意味著web程序在容器(輕量級(jí)虛擬機(jī))內(nèi)以任意主機(jī)名監(jiān)聽80端口的請(qǐng)求。

監(jiān)聽地址UrlPrefix 中的主機(jī)元素有四種形態(tài):

  1. 強(qiáng)通配符 ( + )    
    當(dāng)主機(jī)元素是一個(gè)加號(hào)(+),UrlPrefix     匹配所有可能的主機(jī)名,這時(shí)的UrlPrefix屬于強(qiáng)通配符類別。    
    強(qiáng)通配符在如下場(chǎng)景下有用:當(dāng)web程序要忽略請(qǐng)求到達(dá)的方式或忽略請(qǐng)求host標(biāo)頭中指定的站點(diǎn)時(shí),web服務(wù)器監(jiān)聽地址的主機(jī)元素可設(shè)置為強(qiáng)通配符+
  2. 顯式主機(jī)名    
    當(dāng)主機(jī)元素是完全限定的域名,web服務(wù)器的主機(jī)元素直接與     傳入請(qǐng)求的host標(biāo)頭相匹配, 明確的主機(jī)名對(duì)于多站點(diǎn)很有用,這些Web站點(diǎn)根據(jù)請(qǐng)求所指向的站點(diǎn)傳遞不同的內(nèi)容。
  3. 綁定IP的弱通配符    
    主機(jī)元素為IP地址,這種類型的UrlPrefix匹配尚未與以上強(qiáng)通配符或顯式主機(jī)名匹配的任意IP地址主機(jī)名
  4. 弱通配符 ( * )    
    當(dāng)星號(hào)*作為主機(jī)元素出現(xiàn)時(shí), 這種類型的UrlPrefix將會(huì)匹配尚未與以上強(qiáng)通配符、顯式或IP綁定的弱通配符匹配的任意主機(jī)名, 此主機(jī)元素可以用作默認(rèn)的catch-all,也可以用于指定URL名稱空間的較大部分,而不必使用許多UrlPrefixes

Http Server API維護(hù)了一張路由表,決定哪一個(gè)應(yīng)用程序接收傳入請(qǐng)求,這張路由表是從預(yù)留數(shù)據(jù)庫(kù)中構(gòu)建的,當(dāng)新產(chǎn)生一個(gè)注冊(cè)項(xiàng)或預(yù)留項(xiàng),將會(huì)被放進(jìn)與特定主機(jī)元素相關(guān)的路由桶

 

路由桶優(yōu)先級(jí)

當(dāng)多個(gè)web程序監(jiān)聽的UrlPrefix有重疊時(shí),Http Server API會(huì)根據(jù)注冊(cè)的1-->4路由桶依次匹配,路由桶中UrlPrefix的相對(duì)URI部分中最長(zhǎng)的匹配(假設(shè)URL的主機(jī),端口和方案部分完全匹配)是最佳匹配。在路由桶中找到匹配項(xiàng)后,路由算法將停止搜索并跳過所有優(yōu)先級(jí)較低的存儲(chǔ)桶。

例如下面的注冊(cè)項(xiàng):

  • 注冊(cè)項(xiàng): https://+:80/vroot/ is registered by app1

  • 注冊(cè)項(xiàng): https://adatum.com:80/ is registered by app2

  • 注冊(cè)項(xiàng): https://*:80/ is registered by app3

對(duì)https://adatum.com:80/vroot/subdir/file.htm/的傳入請(qǐng)求路由給 app1,
對(duì)https://adatum.com:80/default.htm/的傳入請(qǐng)求路由給 app2,
對(duì)https://otheradatum.com:80/file.htm/的傳入請(qǐng)求路由給 app3

 
  • HTTP Sever API 提供了     將請(qǐng)求路由到web程序的機(jī)制
  • 應(yīng)用程序監(jiān)聽地址UrlPrefix的主機(jī)元素決定了路由策略,其中     +強(qiáng)通配符 表示忽略請(qǐng)求主機(jī)名和請(qǐng)求的方式,可以認(rèn)為是囫圇吞棗的接收滿足(scheme、port、relativeUrl)的請(qǐng)求。
  • 多個(gè)web程序監(jiān)聽的UrlPrefix有重疊時(shí),Http Server API根據(jù)host元素形成的路由桶有優(yōu)先級(jí)

關(guān)于Http Server API路由如何請(qǐng)求到web程序就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI