Cloudfront 将行为路径附加到原始请求

Cloudfront appending behaviour path to origin request

我有一个云端发行版,设置了 2 个来源和 2 个行为来服务我的静态网站(来自默认 * 行为)并重定向到负载均衡器(来自自定义 /api/* 行为)。

在与安全组较量了一段时间之后,我终于连接了云端以使用 HTTP 发出请求。问题是它返回 404 未找到错误。我相信这是因为 Cloudfront 将 /api/ 附加到原始请求的末尾?

在我的日志中,我可以看到这是 Cloudfront 对我的 elb http://my-elb-address.us-west-1.elb.amazonaws.com:80/api/ 发出的原始请求,如果我在 postman returns 中遇到类似的 404 错误通过我的云端域名。

如果我达到了第一部分 (http://my-elb-address.us-west-1.elb.amazonaws.com:80),我会得到 200 OK。

是否可以从 Cloudfront 源请求中删除行为路径模式?

您混淆了 CloudFront 的路径模式功能(行为)。它不会在请求中附加任何内容,它只是将特定路径“转发”到您在行为中设置的原点。因此,如果您有 /api/* 路径要转发到负载均衡器,那么调用 CloudFront_URL/api/* 不会导致负载均衡器上的 CloudFront_URL/api/api*

至于为什么不带 /api/* 的 URL 对您有用,是因为它将进入 CloudFront 中的默认行为并从 S3 加载您的网站。