为静态 Amazon S3 内容和动态 heroku 内容配置代理的最简单方法

Bry*_*ger 2 dns heroku amazon-s3 amazon-web-services

我的移动应用程序由 heroku (foo.herokuapp.com) 上的一个动态部分组成,它为我们向未安装该应用程序的用户公开的某些内容提供 API 和 Web 视图。当然,还有一个托管在 S3 上的静态登录页面 ( http://foo.co )。

目前,我已经设置了 DNS 来将 foo.co 解析为我们的 S3 实例。S3 有路由规则将我们的动态内容 ( http://foo.co/some_dynamic_data/1234/ )重定向到我们的 heroku 服务器。

鉴于这是一个 3XX 重定向,这会给用户带来非常丑陋的体验,因为他们的浏览器栏现在将反映我们的 heroku 后端。

问题:是否有我可以部署的简单代理服务,它具有特殊的路由规则来将动态内容路由到 heroku,将静态内容路由到 S3,以便我可以将 foo.co DNS 指向代理,而不必通过重定向将后端暴露给用户?

Mic*_*bot 5

云前线。

不要说,“但我认为那是一个 CDN。” 这就是它的营销方式,但它也是一个反向代理 HTTP 请求路由器,可以根据请求路径选择后端。可以使用缓存功能,如果您不需要/想要/理解它,也可以禁用它。

创建一个具有两个来源的分配(这就是 CloudFront 对您的后端服务器的称呼)——一个用于存储桶,一个用于 API 终端节点。

example.com在分发设置中将您的主机名配置为备用主机名。

创建路径行为以选择哪些路径模式路由到哪个原点。如果有一个明显的选择将其中一个作为默认值,捕获每条未配置的路径,将默认行为指向该特定原点。

将 DNS 主机名指向 CloudFront 分配。

可选:在您的站点上使用一些来自 Amazon Certificate Manager 的免费证书的 SSL,该证书与 CloudFront 集成。