本文介绍自定义域名的典型应用场景,以及如何在函数计算控制台为Web应用绑定自定义域名,并为绑定的自定义域名设置CDN加速功能。
典型应用场景
前提条件
创建HTTP函数。自定义域名发出的请求只能触发HTTP函数执行。
操作流程

步骤一:备案域名
在阿里云ICP代备案管理系统备案自定义域名。具体操作,请参见ICP备案流程概述。
步骤二:配置域名解析
配置域名解析到您的函数计算对应地域的Endpoint上。具体操作,请参见配置域名解析。既可以解析到公网Endpoint,又可以解析到内网Endpoint。解析到公网Endpoint,则通过公网访问此域名;解析到内网Endpoint,则通过内网访问此域名。
- 内网Endpoint:格式为
<account_id>.<region_id>-internal.fc.aliyuncs.com
,其中,account_id
是指您的阿里云账号(主账号)ID。例如,您的自定义域名为example.com,您的阿里云账号(主账号)ID为164901546557****,地域为华东2(上海),则内网Endpoint为164901546557****.cn-shanghai-internal.fc.aliyuncs.com
。 - 公网Endpoint:格式为
<account_id>.<region_id>.fc.aliyuncs.com
,其中,account_id
是指您的阿里云账号(主账号)ID。例如,您的自定义域名为example.com,您的阿里云账号(主账号)ID为164901546557****,地域为华东2(上海),则公网Endpoint为164901546557****.cn-shanghai.fc.aliyuncs.com
。
步骤三:添加自定义域名
步骤四:开启CDN加速(可选)
为Web应用绑定自定义域名后,您可以将该自定义域名作为源站域名为其添加加速域名,然后为加速域名配置CNAME,即为域名设置CDN加速功能。将部署在函数计算的应用作为源站,将源内容发布到边缘节点,使终端用户能快速读取所需内容,有效降低访问时延,提高服务质量。更多关于CDN的信息,请参见CDN帮助文档。
方法一:通过函数计算控制台添加加速域名
方法二:通过CDN控制台添加加速域名
通过CDN控制台开启CDN加速的详细步骤,请参见添加加速域名。
其中,设置源站信息时,选择函数计算域名,然后选择目标函数计算服务所在的地域和已创建的自定义域名。
加速域名添加成功后,您可以在函数计算控制台中的目标自定义域名中看到CDN功能开关已开启,并已绑定了在CDN控制台添加的加速域名。具体的验证操作如下:
加速域名.w.alikunlun.com
,例如example.aliyundoc.com.w.alikunlun.com
。
验证结果
自定义域名或CDN加速域名设置成功后,您可以通过以下方式访问自定义域名或CDN加速域名进行测试。
- 方法一:通过命令行
curl URL
测试。例如curl example.com/login
。 - 方法二:通过浏览器测试。
在浏览器地址栏中输入请求URL,然后按回车键可以验证是否调用了目标函数。
TLS协议版本与加密套件对应关系
下表展示了各TLS协议版本与其支持的加密套件之间的对应关系,默认配置列为函数计算系统默认配置的加密套件。
加密套件 | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | 默认配置 |
---|---|---|---|---|---|
TLS_RSA_WITH_3DES_EDE_CBC_SHA | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_RSA_WITH_AES_128_CBC_SHA | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_RSA_WITH_AES_256_CBC_SHA | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_RSA_WITH_AES_128_GCM_SHA256 | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_RSA_WITH_AES_256_GCM_SHA384 | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_RSA_WITH_RC4_128_SHA | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_RSA_WITH_AES_128_CBC_SHA256 | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_ECDHE_RSA_WITH_RC4_128_SHA | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_AES_128_GCM_SHA256 | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_AES_256_GCM_SHA384 | ![]() |
![]() |
![]() |
![]() |
![]() |
TLS_CHACHA20_POLY1305_SHA256 | ![]() |
![]() |
![]() |
![]() |
![]() |


RFC与OpenSSL加密套件命名对照表
RFC命名 | OpenSSL命名 |
---|---|
TLS_RSA_WITH_3DES_EDE_CBC_SHA | DES-CBC3-SHA |
TLS_RSA_WITH_AES_128_CBC_SHA | AES128-SHA |
TLS_RSA_WITH_AES_256_CBC_SHA | AES256-SHA |
TLS_RSA_WITH_AES_128_GCM_SHA256 | AES128-GCM-SHA256 |
TLS_RSA_WITH_AES_256_GCM_SHA384 | AES256-GCM-SHA384 |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA | ECDHE-ECDSA-AES128-SHA |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA | ECDHE-ECDSA-AES256-SHA |
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA | ECDHE-RSA-DES-CBC3-SHA |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA | ECDHE-RSA-AES128-SHA |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | ECDHE-RSA-AES256-SHA |
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | ECDHE-RSA-AES128-GCM-SHA256 |
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | ECDHE-ECDSA-AES128-GCM-SHA256 |
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | ECDHE-RSA-AES256-GCM-SHA384 |
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | ECDHE-ECDSA-AES256-GCM-SHA384 |
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 | 不涉及 |
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 | 不涉及 |
TLS_RSA_WITH_RC4_128_SHA | RC4-SHA |
TLS_RSA_WITH_AES_128_CBC_SHA256 | AES128-SHA256 |
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA | ECDHE-ECDSA-RC4-SHA |
TLS_ECDHE_RSA_WITH_RC4_128_SHA | ECDHE-RSA-RC4-SHA |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | ECDHE-ECDSA-AES128-SHA256 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | ECDHE-RSA-AES128-SHA256 |
TLS_AES_128_GCM_SHA256 | TLS_AES_128_GCM_SHA256 |
TLS_AES_256_GCM_SHA384 | TLS_AES_256_GCM_SHA384 |
TLS_CHACHA20_POLY1305_SHA256 | TLS_CHACHA20_POLY1305_SHA256 |
路由匹配规则
- 精确匹配:请求的路径和设置的路径完全一致才可以触发对应的函数。
假设,设置路径为/a,对应的服务为s1,对应函数为f1,对应的版本为1。那么只有来自路径/a的请求才能触发版本1下的f1函数执行,来自路径/a/的请求无法触发版本1下的f1函数执行。
- 模糊匹配:支持使用通配符(*)设置路径,且通配符(*)只能放到路径的最后。
假设,设置路径为/login/*,对应服务为s2,对应函数为f2,对应版本为1。那么路径前缀为/login/(例如/login/a、/login/b/c/d)的请求都会触发版本1下的f2函数执行。
- 若一个自定义域名下配置了多个路由,则精确匹配的优先级大于模糊匹配的优先级。
- 模糊匹配时满足最长前缀匹配原则。
假设,配置了/login/a/*和/login/*两个路径,自定义域名为
example.com
,请求URL为example.com/login/a/b。此时,该请求URL满足设置的路径。但是根据最长前缀匹配原则,最终匹配的路径应该是/login/a/*。
示例
example.com
,根据本文的操作步骤,设置了以下5条路由规则。
路由规则 | 路径 | 服务名称 | 函数名称 | 版本 |
---|---|---|---|---|
路由规则1 | / | s1 | f1 | 1 |
路由规则2 | /* | s2 | f2 | 2 |
路由规则3 | /login | s3 | f3 | 3 |
路由规则4 | /login/a | s4 | f4 | 4 |
路由规则5 | /login/* | s5 | f5 | 5 |
请求URL | 匹配的服务名称 | 匹配的函数名称 | 匹配的版本 | 匹配的路径 |
---|---|---|---|---|
example.com | s1 | f1 | 1 | / |
example.com/user | s2 | f2 | 2 | /* |
example.com/login | s3 | f3 | 3 | /login |
example.com/login/a | s4 | f4 | 4 | /login/a |
example.com/login/a/b | s5 | f5 | 5 | /login/* |
example.com/login/b | s5 | f5 | 5 | /login/* |
问题诊断
在绑定自定义域名过程中如果发生错误,服务端会返回错误信息,下表列出了常见的错误码,帮助您快速定位和解决问题。
错误码 | HTTP状态码 | 错误信息 | 原因分析 |
---|---|---|---|
DomainNameAlreadyExists | 409 | domain name '%s' already exists | 创建域名时,域名已存在。 |
DomainNameNotFound | 404 | domain name '%s' does not exist | 获取域名信息时,域名不存在。 |
InvalidICPLicense | 400 | domain name '%s' has not got ICP license, or the ICP license does not belong to Aliyun | 域名未备案,或备案未接入阿里云。 |
DomainNameNotResolved | 400 | domain name '%s' has not been resolved to your FC endpoint, the expected endpoint is '%s' | 域名未设置CNAME到指定的Endpoint,可以通过dig命令或在域名解析服务器处查看确认。 |
DomainRouteNotFound | 404 | no route found in domain '%s' for path '%s' | 没有为指定路径设置对应触发的函数。 |
TriggerNotFound | 404 | trigger 'http' does not exist in service '%s' and function '%s' | 自定义域名触发的函数未设置HTTP触发器。 |
如果问题仍未能解决,请联系我们。