函数计算搭建 Serverless Web 应用- 自定义域名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数计算搭建 Serverless Web 应用- 自定义域名相关的知识,希望对你有一定的参考价值。
摘要: 绑定自定义域名可以允许用户通过自定义域名访问 FC 的函数,配合 HTTP 触发器使用,为使用函数计算搭建 Web 应用提供便利。
简介
阿里云 函数计算(Function Compute) 是事件驱动的全托管计算服务,是阿里云的 Serverless 计算平台。基于函数计算构建应用,您无需管理服务器等基础设施,而是专注于应用逻辑的开发,大幅提高开发效率。
文章 函数计算搭建 Serverless Web 应用(一)- HTTP 触发器 中阐述了 Web 应用(Serverless web backend) 是函数计算很重要的一个使用场景。相比于传统的在服务器上搭建 web 应用,函数计算无需您管理服务器等基础设施,只需编写代码并上传,函数计算会为您准备好计算资源,以 弹性、 可靠 的方式运行您的代码,实现毫秒级别弹性伸缩,轻松应对峰值压力。
HTTP 触发器为用户提供一个形如 <account_id>.<region>.fc.aliyuncs.com/<version>/proxy/<serviceName>/<functionName>/[action?queries] 的默认的 endpoint,但是用户希望可以通过自定义域名对外提供服务,原有的 Web 应用可以通过自定义域名进行访问,迁移到函数计算后,只能通过默认 endpoint 访问,实在强人所难。
因此函数计算在 HTTP 触发器后推出自定义域名的功能。
自定义域名
绑定自定义域名可以允许用户通过自定义域名访问 FC 的函数,配合 HTTP 触发器使用,为使用函数计算搭建 Web 应用提供便利。
您可以在函数计算上绑定自定义域名,并设置不同路径到不同服务的不同函数,然后就可以通过自定义域名访问不同的函数了,您的 HTTP Request 会原封不动地传递给函数,FC 不会对您的 HTTP Request 进行任何处理。
例如,您拥有一个域名为 api.app.com 的网站,从成本和弹性扩容角度考虑,您希望将 Web 服务迁移至函数计算,并且不影响外部服务,也就是对外提供服务的链接不变,那么您可以为您的应用绑定自定义域名。
流程对比:
使用流程
创建 HTTP 触发器并且编写函数 ;
搭建过程请参考 HTTP 触发器示例。
绑定自定义域名
步骤一: 域名需要在阿里云备案或接入阿里云备案;
备案请参考文章 阿里云备案 。
步骤二:域名需要解析到您的 endpoint 上,即需要设置域名的 CNAME 到您对应区域的 endpoint,先设置 CNAME 再到函数计算进行绑定;
域名解析请参考文章 设置域名解析;
例如:您的域名为 app.com,您的 accountID 为 12345,区域为上海,需要设置 app.com 的 CNAME 为 12345.cn-shanghai.fc.aliyuncs.com。
步骤三:在函数计算绑定自定义域名,并设置不同的路径到不同函数。
同一域名绑定的函数必须在同一区域,可以属于不同服务;
例如,您可以设置路径 “/a” 的请求到 service1 的 function1 执行,设置路径 “/b” 的请求到 service2 的 function2 执行;
只有设置了 HTTP 触发器 的函数才可以通过自定义域名的请求触发执行。
路由匹配规则
您需要在自定义域名处设置路径和函数的对应关系,即请求的路径不同可以触发不同函数执行。函数计算支持精确匹配和模糊匹配,具体规则如下:
支持精确匹配和模糊匹配。
精确匹配是设置的路径和到来的请求完全一致才可以匹配,例如 /a 触发服务 s1 下的 f1(以下统一简写成 s1/f1),那么路径为 /a/ 的请求无法触发 f1 的执行。
支持通配符 ,且只能放到路径的最后,比如 /login/ 表示路径前缀为 /login/ 的请求,/login/* 对应 s2/f2,那么 /login/a、/login/b/c/d 都会触发 f2 的执行。
匹配顺序为:精确匹配 -> 模糊匹配
匹配优先级为:最长前缀匹配
示例:
域名为 api.app.com,设置的路由匹配规则如下:
最终的匹配结果:
总结
绑定自定义域名可以允许用户通过自定义域名访问 FC 的函数,配合 HTTP 触发器使用,可以快速搭建性能稳定弹性可扩容的 Web 应用,可以说是十分方便了。
以上是关于函数计算搭建 Serverless Web 应用- 自定义域名的主要内容,如果未能解决你的问题,请参考以下文章
轻松搭建基于 Serverless 的 Go 应用(GinBeego 举例)
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用