基于子域名定向请求至特定路径:S3静态站配置可行性咨询
当然可以实现!这里有两种靠谱方案供你选择
方案1:用CloudFront(首推,灵活又好维护)
这是大多数人会选的方式,尤其是你已经有主站托管在S3的情况下:
- 先创建一个CloudFront分发,把源站地址设为你现有S3静态网站的端点(比如
your-bucket.s3-website-us-east-1.amazonaws.com,别选那个S3 REST端点,要选带website的) - 进入分发的行为配置,把「默认根对象」改成
app/index.html——这样用户访问app.example.com时,CloudFront会直接拉取你桶里这个路径的内容返回 - 接着去Route 53给
app.example.com加一条A记录,类型选「别名」,目标选你刚创建的CloudFront分发 - 记得给CloudFront配个SSL证书(用ACM在us-east-1区申请免费的就行),这样还能支持HTTPS,体验更完善
方案2:S3重定向规则+独立子域名桶(不用额外服务的轻量方案)
如果不想用CloudFront,也能靠S3自身的功能搞定:
- 新建一个S3桶,桶名必须严格等于
app.example.com——S3要求桶名和域名完全匹配才能直接绑定 - 开启这个新桶的静态网站托管,选择「重定向到另一个主机名」,目标填你现有S3桶的静态网站端点
- 然后在新桶的静态网站配置里加一条重定向规则:
这条规则的作用是,把所有访问<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals></KeyPrefixEquals> </Condition> <Redirect> <HostName>your-existing-bucket.s3-website-<region>.amazonaws.com</HostName> <ReplaceKeyPrefixWith>app/</ReplaceKeyPrefixWith> <HttpRedirectCode>302</HttpRedirectCode> </Redirect> </RoutingRule> </RoutingRules>app.example.com的请求,都重定向到你现有桶的app/路径下 - 最后去Route 53给
app.example.com加一条A别名记录,指向这个新桶的静态网站端点
⚠️ 小提醒:方案2是靠重定向实现的,用户访问时地址栏可能会跳转到原桶的路径(如果用301永久重定向的话);而方案1是CloudFront直接返回内容,地址栏会一直保持app.example.com,用户体验更好,更推荐前者。
内容的提问来源于stack exchange,提问作者chubaka
相关产品推荐
相关产品推荐

