AWS负载均衡器,为静态站点和api提供服务

时间:2018-11-01 12:16:07

标签: amazon-web-services api nginx amazon-cloudfront amazon-elb

首先,我为我的无知感到抱歉,但是在AWS ELB一词中,有一个概念对我来说并不十分清楚。

我在cloudfront上部署了一个前端站点,并在EC2实例中运行了一个API。

我要存档的是避免有2个域来提供相同的数据。

例如,我想使用https://example.com/post通过我的网站进行访问,您将看到该网站本身(来自Cloudfront的HTML)。

但是,如果您尝试通过HTTP / HEADER Accept: application/json访问https://example.com/post,则可以从API服务器本身(EC2实例)查看json内容。

使用ELB可以吗?还是我必须对EC2实例进行一些欺骗,例如将nginx设置为代理并在不存在标头的情况下提供cloudfront内容?

谢谢。

1 个答案:

答案 0 :(得分:3)

我不确定是否可以使用接受标头来完成此操作。 但是,如果您用不同的根路径将静态和动态内容分开,那么这是一个非常标准的部署。

例如,如果所有动态内容都以/api为前缀(或者,所有静态内容都以/static/为前缀),那么您需要的是:

  1. 在cloudfront中创建一个指向ELB / EC2的原点
  2. 在cloudfront中创建一个指向S3存储桶的静态原点。
  3. 在Cloudfront中为/api/路径创建行为(确保它不缓存任何内容并传递所有标头和cookie),它应指向ELB / EC2的起源。
  4. 为指向s3源的根路径(默认)创建静态行为,该行为在适用时可以具有缓存静态内容。

有关此方法的更多详细信息,请参阅本指南: https://aws.amazon.com/blogs/networking-and-content-delivery/dynamic-whole-site-delivery-with-amazon-cloudfront/