多租户Web应用:多个域名指向单个CloudFront分发可行性咨询
多租户Web应用自定义域名接入CloudFront的解决方案
核心思路
通过自有域名的通配符证书覆盖所有租户子域名,让客户自定义域名CNAME到专属租户子域名,配合请求头提取逻辑,实现无需为客户域名申请/更新证书的接入流程。
具体实现步骤
- 申请通配符ACM证书:在AWS us-east-1区域申请
*.example.com和example.com的公网证书,完成验证后关联到你的CloudFront分发。 - 配置CloudFront备用域名:在CloudFront分发的「备用域名(CNAMEs)」中添加
example.com和*.example.com,所有子域名的请求都会被CloudFront接受。 - 租户子域名映射:为每个客户分配专属子域名(如
client-abc.example.com),在应用层建立该子域名与客户自定义域名(client-domain.com)的映射关系。 - 客户域名配置:指导客户将其自定义域名
client-domain.com的DNS记录设置为CNAME,指向分配的专属子域名client-abc.example.com。 - Lambda@Edge处理请求:创建Viewer Request阶段的Lambda@Edge函数,提取请求的
Host头(即客户的自定义域名client-domain.com),将其添加为自定义请求头(如X-Client-Domain)传递给后端应用。 - 应用路由逻辑:后端应用根据
X-Client-Domain头(或直接解析Host头)返回对应租户的应用版本。
优势
- 无需为客户自定义域名申请任何证书,所有请求通过自有域名的通配符证书完成SSL加密,彻底避免证书更新和重复验证的问题。
- 添加新客户时,仅需在应用层添加映射记录,无需修改CloudFront或ACM配置,流程可完全自动化。
- 客户访问自定义域名时,浏览器会匹配到租户子域名的证书(通配符证书覆盖),不会出现SSL错误。
备选方案:AWS Global Accelerator前置(仅适配特定场景)
如果需要静态IP路由或规避CloudFront备用域名限制,可将Global Accelerator前置:
- 为Global Accelerator分配静态IP,指向你的CloudFront分发域名。
- 让客户将自定义域名A记录指向Accelerator静态IP(或CNAME指向Accelerator域名)。
- 用Lambda@Edge提取
Host头,应用根据该头路由到对应租户版本。 - 注意:此方案下浏览器会显示CloudFront的证书(与客户域名不匹配),仅适合内部或对SSL验证要求较低的场景。
关键注意事项
- ACM证书必须部署在us-east-1区域才能关联到CloudFront。
- Lambda@Edge函数需部署在us-east-1区域,并配置对应IAM权限。
- 客户DNS服务商需支持CNAME记录(根域名场景可使用CNAME flattening或ANAME记录)。
内容的提问来源于stack exchange,提问作者123
相关产品推荐
相关产品推荐

