您好,登錄后才能下訂單哦!
這篇文章給大家介紹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)求
這里涉及一個(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):
匹配所有可能的主機(jī)名
,這時(shí)的UrlPrefix屬于強(qiáng)通配符類別。
傳入請(qǐng)求的host標(biāo)頭相匹配
, 明確的主機(jī)名對(duì)于多站點(diǎn)很有用,這些Web站點(diǎn)根據(jù)請(qǐng)求所指向的站點(diǎn)傳遞不同的內(nèi)容。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)的路由桶
當(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
將請(qǐng)求路由到web程序
的機(jī)制+強(qiáng)通配符
表示忽略請(qǐng)求主機(jī)名和請(qǐng)求的方式,可以認(rèn)為是囫圇吞棗的接收滿足(scheme、port、relativeUrl)的請(qǐng)求。關(guān)于Http Server API路由如何請(qǐng)求到web程序就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(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)容。