【问题标题】:AWS Point a domain name to both cloud front and an APIAWS 将域名指向云端和 API
【发布时间】:2017-03-31 10:03:32
【问题描述】:

所以,我以前使用过 Route 53 之类的东西。我现在有一个项目,其中将有一个通过静态页面提供服务但使用 Javascript 访问 API 的网站。静态页面存储在云端缓存的 S3 中,api 是一个 API 网关,与一些后端逻辑绑定。

我怎样才能使 www.site.com 指向连接到云端的 S3 实例,但 www.site.com/api/ 重定向到我的 api?这甚至可能吗?

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-cloudfront aws-api-gateway domain-name


    【解决方案1】:

    使用 DNS 无法做到这一点。

    相反,您可以将 CloudFront 用于前端:S3 存储桶和 API。

    1. 创建 CloudFront 分配。
    2. 将别名设置为 www.site.com
    3. /api 创建一个“行为”,并让它使用指向您的 API 的原点。
    4. 为其他所有内容设置第二个(默认)行为,并让它使用指向您的 S3 存储桶的原点。
    5. 最后,使用 Route53 将 www.site.com 指向您的 CloudFront 分配。

    【讨论】:

      【解决方案2】:

      是的,您可以在 AWS 中执行此操作。

      创建一个CloudFront 分配,将您的域指向Route53 中的CloudFront

      在新创建的发行版中,找到Origins 选项卡,选择Create Origin。添加路径/api,指向API Gateway / an ELB / an EC2。

      然后创建另一个origin,添加路径/cdn,指向一个s3 bucket。

      【讨论】:

      • 您好,谢谢您的回答。我是这样做的,但我有一个严重的问题。尝试使用 content-type application/x-www-form-urlencoded 直接向 api 发出 POST 请求,但是将云端分发指向 api 在我尝试使用它时会出现请求无法满足错误(例如: stuff.cloudfront.net/test -> unique_id.execute-api.ap-northeast-1.amazonaws.com/test,然后发布 stuff.cloudfront.net/test/email 以获取 /email api 部分)
      【解决方案3】:

      如果您使用api.site.com 或类似的子域而不是www.site.com/api,则无需将CF 分发指向APIGW API。

      APIGW 前面已经有一个 CF 发行版;自定义域名功能允许您导入附加到现有 CF 分发的 SSL 证书。然后 APIGW 提供 CF 分发的域名,因此您可以配置一个子域记录,如 api.site.com 来指向它。

      http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-24
        • 2014-08-12
        • 1970-01-01
        • 1970-01-01
        • 2017-06-18
        • 2018-11-30
        • 2016-04-21
        相关资源
        最近更新 更多