如何在AWS上实现新商户注册自动生成子域名指向单个ECS上的Next.js应用
整体架构设计
核心逻辑是靠通配符DNS+通配符SSL证书覆盖所有平台分配的子域名,不需要为每个新商户单独操作DNS和证书配置,大幅降低运维复杂度
- DNS层:为主域名(假设为
yourplatform.com)添加一条通配符解析记录*.yourplatform.com,解析指向你的流量入口(AWS ALB应用负载均衡或CDN节点)。 - 流量接入层:使用AWS ALB作为统一入口,监听80/443端口,在AWS Certificate Manager中申请免费的通配符SSL证书
*.yourplatform.com绑定到ALB的443监听器上,自动续期无需手动维护。ALB配置默认转发规则,将所有域名的请求都转发到运行Next.js应用的ECS服务目标组。 - 应用层:Next.js应用侧增加子域名识别逻辑,可在Middleware层统一处理:
提取到子域名前缀后,查询商户数据库获取对应店铺的配置、装修数据等,渲染对应店铺页面即可。提前维护平台保留子域名黑名单(如// Next.js App Router 示例代码 const host = request.headers.get('host') || '' const subdomainSlug = host.split('.')[0] // 从x-beauty.yourplatform.com中提取x-beautywww、admin、api、help等),禁止商户注册使用避免冲突。 - 数据层:商户表新增
subdomain_slug(子域名前缀,唯一索引)、is_subdomain_active(子域名是否生效)两个字段,用于应用侧校验和查询。
新商户注册时的自动配置流程
- 注册校验:商户提交店铺信息时,后端先做三重校验:子域名前缀格式校验(仅允许小写字母、数字、横杠,长度合规)、是否属于保留子域名黑名单、是否已被其他商户占用,全部通过才可进入下一步。
- 数据入库:校验通过后将商户信息、
subdomain_slug写入数据库,将is_subdomain_active设为true即可,无需额外操作DNS、负载均衡、证书等资源,子域名实时生效。 - 异常兜底:Next.js应用侧增加校验逻辑,若提取到的子域名前缀无法匹配到已激活的商户,直接返回404页面或平台引导页即可。
- 扩展说明:如果后续支持商户绑定自定义独立域名,才需要额外做自定义域名的证书签发、ALB规则添加等操作,平台分配的子域名完全无需额外配置。
内容的提问来源于stack exchange,提问作者Luke Skywalker
相关产品推荐
相关产品推荐

