函数计算搭建 Serverless Web 应用(二)- 自定义域名
簡(jiǎn)介
阿里云?函數(shù)計(jì)算(Function Compute)?是事件驅(qū)動(dòng)的全托管計(jì)算服務(wù),是阿里云的?Serverless?計(jì)算平臺(tái)。基于函數(shù)計(jì)算構(gòu)建應(yīng)用,您無(wú)需管理服務(wù)器等基礎(chǔ)設(shè)施,而是專注于應(yīng)用邏輯的開(kāi)發(fā),大幅提高開(kāi)發(fā)效率。
文章?函數(shù)計(jì)算搭建 Serverless Web 應(yīng)用(一)- HTTP 觸發(fā)器?中闡述了 Web 應(yīng)用(Serverless web backend) 是函數(shù)計(jì)算很重要的一個(gè)使用場(chǎng)景。相比于傳統(tǒng)的在服務(wù)器上搭建 web 應(yīng)用,函數(shù)計(jì)算無(wú)需您管理服務(wù)器等基礎(chǔ)設(shè)施,只需編寫代碼并上傳,函數(shù)計(jì)算會(huì)為您準(zhǔn)備好計(jì)算資源,以?彈性、?可靠?的方式運(yùn)行您的代碼,實(shí)現(xiàn)毫秒級(jí)別彈性伸縮,輕松應(yīng)對(duì)峰值壓力。
HTTP 觸發(fā)器為用戶提供一個(gè)形如?<account_id>.<region>.fc.aliyuncs.com/<version>/proxy/<serviceName>/<functionName>/[action?queries]?的默認(rèn)的 endpoint,但是用戶希望可以通過(guò)自定義域名對(duì)外提供服務(wù),原有的 Web 應(yīng)用可以通過(guò)自定義域名進(jìn)行訪問(wèn),遷移到函數(shù)計(jì)算后,只能通過(guò)默認(rèn) endpoint 訪問(wèn),實(shí)在強(qiáng)人所難。
因此函數(shù)計(jì)算在 HTTP 觸發(fā)器后推出自定義域名的功能。
自定義域名
綁定自定義域名可以允許用戶通過(guò)自定義域名訪問(wèn) FC 的函數(shù),配合 HTTP 觸發(fā)器使用,為使用函數(shù)計(jì)算搭建 Web 應(yīng)用提供便利。
您可以在函數(shù)計(jì)算上綁定自定義域名,并設(shè)置不同路徑到不同服務(wù)的不同函數(shù),然后就可以通過(guò)自定義域名訪問(wèn)不同的函數(shù)了,您的 HTTP Request 會(huì)原封不動(dòng)地傳遞給函數(shù),FC 不會(huì)對(duì)您的 HTTP Request 進(jìn)行任何處理。
例如,您擁有一個(gè)域名為 api.app.com 的網(wǎng)站,從成本和彈性擴(kuò)容角度考慮,您希望將 Web 服務(wù)遷移至函數(shù)計(jì)算,并且不影響外部服務(wù),也就是對(duì)外提供服務(wù)的鏈接不變,那么您可以為您的應(yīng)用綁定自定義域名。
?
流程對(duì)比:
| 部署階段 | 1.編寫應(yīng)用代碼并部署到用戶服務(wù)器 2.為域名備案? 3.設(shè)置 DNS 解析到用戶服務(wù)器 IP 4.利用 web 框架設(shè)置路徑和服務(wù)的對(duì)應(yīng)關(guān)系 | 1.在函數(shù)計(jì)算為應(yīng)用編寫函數(shù)并設(shè)置 HTTP 觸發(fā)器? 2.域名在阿里云備案或接入阿里云備案? 3.DNS 解析到 FC 地址:<accountID>.<region>.fc.aliyuncs.com? 4. 在 FC 綁定域名,并設(shè)置路徑與函數(shù)的對(duì)應(yīng)關(guān)系 |
| 訪問(wèn)階段 | 1.訪問(wèn)?api.app.com/login? 2.DNS 解析到用戶服務(wù)器 IP? 3.api.app.com/login?訪問(wèn)用戶服務(wù)器的服務(wù) | 1.訪問(wèn)?api.app.com/login? 2.DNS 解析到 FC 地址? 3.api.app.com/login?訪問(wèn)部署在 FC 的函數(shù) |
使用流程
-
創(chuàng)建 HTTP 觸發(fā)器并且編寫函數(shù) ;
- 搭建過(guò)程請(qǐng)參考?HTTP 觸發(fā)器示例。
-
綁定自定義域名
-
步驟一: 域名需要在阿里云備案或接入阿里云備案;
- 備案請(qǐng)參考文章?阿里云備案?。
-
步驟二:域名需要解析到您的?endpoint?上,即需要設(shè)置域名的 CNAME 到您對(duì)應(yīng)區(qū)域的 endpoint,先設(shè)置 CNAME 再到函數(shù)計(jì)算進(jìn)行綁定;
- 域名解析請(qǐng)參考文章?設(shè)置域名解析;
- 例如:您的域名為?app.com,您的 accountID 為 12345,區(qū)域?yàn)樯虾?#xff0c;需要設(shè)置?app.com?的 CNAME 為?12345.cn-shanghai.fc.aliyuncs.com。
-
步驟三:在函數(shù)計(jì)算綁定自定義域名,并設(shè)置不同的路徑到不同函數(shù)。
- 同一域名綁定的函數(shù)必須在同一區(qū)域,可以屬于不同服務(wù);
- 例如,您可以設(shè)置路徑?“/a”??的請(qǐng)求到?service1?的?function1?執(zhí)行,設(shè)置路徑?“/b”?的請(qǐng)求到?service2?的?function2?執(zhí)行;
- 只有設(shè)置了?HTTP 觸發(fā)器?的函數(shù)才可以通過(guò)自定義域名的請(qǐng)求觸發(fā)執(zhí)行。
-
路由匹配規(guī)則
您需要在自定義域名處設(shè)置路徑和函數(shù)的對(duì)應(yīng)關(guān)系,即請(qǐng)求的路徑不同可以觸發(fā)不同函數(shù)執(zhí)行。函數(shù)計(jì)算支持精確匹配和模糊匹配,具體規(guī)則如下:
-
支持精確匹配和模糊匹配。
- 精確匹配是設(shè)置的路徑和到來(lái)的請(qǐng)求完全一致才可以匹配,例如?/a?觸發(fā)服務(wù) s1 下的 f1(以下統(tǒng)一簡(jiǎn)寫成 s1/f1),那么路徑為?/a/?的請(qǐng)求無(wú)法觸發(fā) f1 的執(zhí)行。
- 支持通配符?*,且只能放到路徑的最后,比如??/login/*?表示路徑前綴為?/login/?的請(qǐng)求,/login/*?對(duì)應(yīng) s2/f2,那么?/login/a、/login/b/c/d?都會(huì)觸發(fā) f2 的執(zhí)行。
- 匹配順序?yàn)?#xff1a;精確匹配 -> 模糊匹配
- 匹配優(yōu)先級(jí)為:最長(zhǎng)前綴匹配
示例:
域名為?api.app.com,設(shè)置的路由匹配規(guī)則如下:
| / | s1 | f1 |
| /* | s2 | f2 |
| /login | s3 | f3 |
| /login/a | s4 | f4 |
| /login/* | s5 | f5 |
最終的匹配結(jié)果:
| api.app.com | s1 | f1 | / |
| api.app.com/user | s2 | f2 | /* |
| api.app.com/login | s3 | f3 | /login |
| api.app.com/login/a | s4 | f4 | /login/a |
| api.app.com/login/a/b | s5 | f5 | /login/* |
| api.app.com/login/b | s5 | f5 | /login/* |
總結(jié)
綁定自定義域名可以允許用戶通過(guò)自定義域名訪問(wèn) FC 的函數(shù),配合 HTTP 觸發(fā)器使用,可以快速搭建性能穩(wěn)定彈性可擴(kuò)容的 Web 應(yīng)用,可以說(shuō)是十分方便了。
您在使用過(guò)程中遇到任何問(wèn)題都可以隨時(shí)?聯(lián)系我們,函數(shù)計(jì)算團(tuán)隊(duì)所有工程師都會(huì)在群里實(shí)時(shí)進(jìn)行答疑,沒(méi)錯(cuò),所有工程師,任何問(wèn)題,隨時(shí)聯(lián)系。
期待您的使用~~
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的函数计算搭建 Serverless Web 应用(二)- 自定义域名的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 在MaxCompute上分析IP来源的方
- 下一篇: Mars 如何分布式地执行