如何解决AWS设置:将单页静态应用程序前端从Web服务器移至S3
我当前的网站(具有CORS + API的单页应用程序)已部署在AWS EC2实例上,并通过ALB提供服务(主要是因为HTTPS设置比较容易,因为我现在只涉及一个区域)。 Web服务器被配置为服务于单页应用程序,但这就是有关前端的全部工作。我想将单页面应用程序移至S3,因此将后端与前端完全分开。问题是,就AWS设置而言,最有效的方法是什么?我可以提出以下建议:
- 将域指向S3实例以提供前端文件,将API调用指向ALB公共DNS地址
- 保持指向ELB的域原样,将端口80和443路由到S3,更改API端口并将该端口路由到EC2
- ...
任何帮助表示赞赏。
解决方法
如果您试图将前端和后端的基础架构完全分开,但要保留相同的域,则可以使用CloudFront。
在CloudFront中,您将在您的分布中创建2个起源:
- 默认来源为S3静态网站。
- 然后是指向原始ALB的其他起点。
您将配置此CloudFront分布的行为,以便当路径匹配特定模式(即api/*
)时,它将流量转发到ELB。如果不匹配,则默认为您的S3存储桶。
看看Can I use a single CloudFront web distribution to serve content from multiple origins using multiple behaviors?文章,该文章涵盖了与我概述的行为类似的行为。