CloudFront 使用路径前缀重定向所有请求
Posted
技术标签:
【中文标题】CloudFront 使用路径前缀重定向所有请求【英文标题】:CloudFront redirect all requests with path prefix 【发布时间】:2016-10-06 09:35:44 【问题描述】:我有一个向 API 服务器发出请求的静态网站。我用 S3 托管这个静态页面,我想使用 CloudFront 将 api 调用重定向到 api 服务器。 api调用可以通过api的路径前缀来区分:
domain.com/index.html s3/index.html
domain.com/js/index.js s3/js/index.html
domain.com/api/request api_server/api/request
domain.com/api/other/request api_server/api/other/request
我目前设置了两个源 - 一个 S3 源用于我的 S3 存储桶(正在运行),另一个自定义源用于我的 api 服务器(无法运行)。
自定义原点设置如下:
Origin Domain Name: api_elb
Origin path: /
行为设置如下:
Precedence: 0
Path pattern: /api/*
Allowed HTTP Methods: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
Forward Headers: all
Forward Query Strings: yes
以下是完整回复:
> GET /api/logout HTTP/1.1
> Host: a0000aaaaaaaaa.cloudfront.net
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 502 Bad Gateway
< Content-Type: text/html
< Content-Length: 587
< Connection: keep-alive
< Server: CloudFront
< Date: Mon, 06 Jun 2016 19:37:45 GMT
< X-Cache: Error from cloudfront
< Via: 1.1 86f2bbfea57d6217ce2d279b84ca3743.cloudfront.net (CloudFront)
< X-Amz-Cf-Id: A18***PPr0cWn5VuVirvvKc-wocC9OcXjNDHZm-PyvD3ONGcPmqmmg==
<
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>ERROR: The request could not be satisfied</TITLE>
</HEAD><BODY>
<H1>ERROR</H1>
<H2>The request could not be satisfied.</H2>
<HR noshade size="1px">
CloudFront wasn't able to connect to the origin.
<BR clear="all">
<HR noshade size="1px">
<PRE>
Generated by cloudfront (CloudFront)
Request ID: -u68y2nD9tuaxL_2MjSk3udA1r64v-K3xoGitKFYvd9Z48gB8ntnwg==
</PRE>
<ADDRESS>
</ADDRESS>
这个配置有什么问题?如何让 CloudFront 将这些请求转发到 API?它当前为所有 API 请求返回 502(错误网关)响应。
【问题讨论】:
【参考方案1】:这里好像有人回答了这个问题:
https://***.com/a/23599450/2542922
我将 api_server.company.com 添加到备用域名。
【讨论】:
以上是关于CloudFront 使用路径前缀重定向所有请求的主要内容,如果未能解决你的问题,请参考以下文章
使用 S3、CloudFront 和源路径的静态网站托管的子文件夹重定向问题
AWS CloudFront 如何遵循 S3 存储桶重定向规则?
Cloudfront:设置与 Origin 的 s3 路径差异
Cloudfront 域名无法使用 S3、Cloudfront 和 Route 53 将 HTTP 重定向到 HTTPS