我已经在Amazon AWS上部署了以下架构。
目标是在https://app.acmecorp.com上公开一个作为入口点的Web应用程序(单页应用程序)。 这是一个单页面应用程序:
这个想法是将后端部署在Elastic Container Service Cluster(通过docker)中。 然后,这些资源会被生成/自动扩展到由负载均衡器提供服务的目标组中。 后端通过https://backend.acmecorp.com公开。 (指向AWS负载均衡器的DNS CNAME)
单页面应用程序部署在Amazon S3 Bucket中,并通过S3静态站点托pipe显示。 ( http://frontend.s3-website-us-west-2.amazonaws.com )。 这也可以通过http://frontend.acmecorp.com上的DNS CNAME公开
我想要的是以下。 用户通过https://app.acmecorp.com访问应用程序。 这应该服务于静态内容。 为避免CORS设置,我希望单页面应用程序能够将该域调用的API调用转换为/api ,因此对https://app.acmecorp.com/api/ **的调用应映射到后端。
显然,这可以用Nginx之类的东西来完成,但是我想知道是否有亚马逊为此提供的东西,以及需要什么样的构build块才能拥有这个function
您可以使用Cloudfront和逆向代理方法实现您的目标:
首先使用app.acmecorp.com将您的发行版创build为特定的CNAME,并上传此子域的自定义SSL证书。
创build两个来源,一个指向您的存储桶,另一个指向您的API Load Balancer。 这两个来源将在稍后configuration您的CDN行为时使用。
为/ api创build一个以平衡器为原点的行为,将所有标题传递给原点(这将有效地禁用边缘caching)
configuration默认行为以指向您的S3存储桶。
最后,将您的app.acmecorp.com指向DNS中的CDN端点。
Cloudfront的起源和行为有更多的select,你必须注意,但满足你的需求的基础是在那里。