You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AWS中实现通配符域名托管多静态站点的迁移方案咨询

嘿,我之前刚好做过几乎一模一样的迁移,给你整理几个AWS上的等效实现方案,都是在生产环境验证过的,你可以根据自己的需求来选:

方案1:CloudFront + S3(无服务器架构,推荐纯静态站点)

这是成本最低、维护量最少的方案,完全不需要管理服务器,适合纯静态的站点:

  • 第一步:申请通配符SSL证书
    去AWS Certificate Manager(ACM)申请*.domain.com的证书,注意如果要用CloudFront,证书必须在us-east-1(弗吉尼亚北部)区域创建,CloudFront只认这个区域的证书。申请时选择DNS验证,Route 53会自动帮你添加验证记录,等几分钟就能通过。
  • 第二步:准备S3存储
    创建一个全局唯一的S3桶(比如static-domain-com),然后在桶里为每个子域名创建对应的文件夹,比如myapp、blog,把原来对应子域名的静态文件上传到各自的文件夹里。记得把桶的静态网站托管打开,或者直接用CloudFront作为访问入口(更安全)。
  • 第三步:配置CloudFront分发
    创建CloudFront分发,起源设置为刚才的S3桶,然后在“设置”里添加CNAME为*.domain.com,选择你刚申请的ACM证书。
  • 第四步:用Lambda@Edge实现子域名路由
    因为CloudFront默认不会根据子域名自动路由到S3的对应文件夹,所以需要写个简单的Lambda@Edge函数,在请求到达时修改路径:
    编写Node.js函数(要在us-east-1区域创建,然后关联到CloudFront):
    exports.handler = (event, context, callback) => {
      const request = event.Records[0].cf.request;
      const host = request.headers.host[0].value;
      const subdomain = host.split('.')[0];
      // 跳过根域名(domain.com)的情况,如果你不需要根域名可以删掉这段
      if (subdomain !== 'domain') {
        request.uri = `/${subdomain}${request.uri}`;
      }
      callback(null, request);
    };
    
    在CloudFront分发的“行为”里添加触发器,选择“查看器请求”阶段关联这个Lambda函数。
  • 第五步:Route 53解析配置
    去Route 53的域名托管区,创建一条通配符A记录,把*.domain.com指向CloudFront分发的域名。
方案2:ALB + EC2(保留原有Nginx架构,迁移改动最小)

如果你不想改动原来的Nginx配置,只想把服务器迁到AWS,这个方案最适合:

  • 第一步:申请区域级SSL证书
    在ACM里和你的EC2/ALB同区域申请*.domain.com的证书,同样用DNS验证。
  • 第二步:迁移Nginx到EC2
    启动EC2实例(选合适的实例类型,比如t3.micro足够小流量),安装Nginx,直接复制原来的配置文件,比如:
    server {
      listen 80;
      server_name *.domain.com;
      root /var/www/$host/public;
      index index.html index.htm;
    
      location / {
        try_files $uri $uri/ =404;
      }
    }
    
    把原来的静态文件同步到EC2的/var/www/myapp.domain.com/public这类路径下,和原来完全一致。
  • 第三步:配置Application Load Balancer(ALB)
    创建ALB,配置HTTPS(443端口)监听,关联刚才的ACM证书,然后把EC2实例注册到ALB的目标组里。如果需要高可用,可以多启动几个EC2实例,或者配置Auto Scaling Group自动扩容缩容。
  • 第四步:Route 53解析
    在Route 53创建通配符A记录,指向ALB的DNS名称。
方案3:AWS Amplify(适合现代静态框架站点,如Vue/React)

如果你用的是React、Vue这类现代框架构建的静态站点,Amplify是最省心的方案,自动处理部署、缓存、SSL:

  • 第一步:关联代码仓库
    在Amplify控制台创建应用,关联你的GitHub/GitLab代码仓库,Amplify会自动检测框架并生成部署配置。
  • 第二步:绑定通配符域名
    进入Amplify的“域名管理”,添加自定义域名*.domain.com,按照提示在Route 53添加CNAME记录验证域名所有权。
  • 第三步:子域名绑定
    对于每个子域名(比如myapp.domain.com),可以创建一个单独的Amplify应用,或者用分支部署(比如myapp分支对应myapp.domain.com),直接在域名管理里绑定对应的子域名即可,Amplify会自动部署并配置SSL。
一些关键注意点
  • 域名验证:不管用哪个方案,ACM证书的DNS验证都需要在Route 53添加对应记录,Route 53和ACM集成后会自动帮你添加,不用手动操作。
  • 缓存策略:CloudFront和Amplify都有默认缓存策略,你可以根据静态资源的更新频率调整缓存时间,比如图片、JS/CSS可以设置较长的缓存时间,HTML设置较短的。
  • 成本对比:CloudFront+S3成本最低,适合小流量站点;ALB+EC2成本稍高,但灵活性强;Amplify按使用量计费,适合快速迭代的项目。

内容的提问来源于stack exchange,提问作者Grant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:30:07