标签: amazon-cloudfront

使用 S3 重定向的 Amazon Cloudfront

我正在尝试做一些相对简单的事情 - 我想设置一些域和子域以重定向到我们网站的核心域,但我想将重定向放在 Cloudfront 上。除了重定向根路径之外,一切正常——这让我得到了一个 XML 文件,部分描述了 S3 存储桶。

背景

S3

S3 允许您设置全重定向存储桶,例如:

带有重定向所有请求设置的 S3

对此进行测试,Web 端点 (brass9-com.s3-website-us-west-1.amazonaws.com) 会执行它应该执行的操作 - 它重定向到 bras9.com。好的。

云前线

Cloudfront 允许您指向一个 S3 存储桶,但它建议您这样做的方式是错误的 - 而不是按名称指向存储桶,例如 bras9-com.s3.amazonaws.com,您需要使用上面的 Web 端点。除此之外,您可以将所有内容保留为默认值并获得良好的重定向行为。因此,像www.brass9.com/portfolio这样的路径会正确地重定向到它应该指向的位置。也很好。

问题 - 根域重定向

然后失败的一件事是从普通的www.brass9.com重定向。它不是让你重定向,而是让你得到这个奇怪的结果:

<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>brass9-com</Name><Prefix></Prefix>
<Marker></Marker><MaxKeys>1000</MaxKeys><IsTruncated>false</IsTruncated>
</ListBucketResult>
Run Code Online (Sandbox Code Playgroud)

好的... 。所以这并不完全出乎意料- 因为没有默认根对象。但是我可能会指定什么默认根对象来防止这种行为?我需要指向的 S3 重定向对象的名称是什么(如果有)?或者是否有其他一些适当的配置,或者这只是 Amazon 需要修复的 Cloudfront 和 S3 交互方式中的一个错误?

已知无效的解决方案:默认根对象

可以指定 index.html 的默认根对象,但这没有任何帮助 - 它只是改变了问题。Cloudfront url 而是重定向到主站点上的 /index.html,这是一个 404(我们不使用 index.html 文件,它是一个服务器端框架驱动的站点)。我可以在服务器上放置一个 index.html,但这首先会破坏使用 Cloudfront 的小速度增益。 …

amazon-s3 redirect amazon-cloudfront

11
推荐指数
2
解决办法
9185
查看次数

AWS CloudFront 是否应该*增加*不常访问的文件的加载时间?

我是 CDN 的新手,正在尝试 CloudFront。我已经设置了一切,一切似乎都运行良好。我可以在页面上创建静态图像并通过我的 CloudFront 分配访问它。我使用的是自定义来源(即不是 s3 存储桶)。

不过,我担心从性能的角度来看,我的情况可能会更糟。我有一个测试页面,它在使用和不使用 CDN 的情况下加载相同的 20 个左右的图像。查看 Firebug 中的网络面板,我第一次加载此页面时,直接从源服务器加载的图像的速度要快得多。在后续页面加载时,CDN 的好处变得显而易见——在 3-5 次刷新后,CDN 的表现比原始服务器好。

所以我可以看到,在我们网站上一个一直被点击的热门页面上,这将是一个好处。我应该期待一个好处,因为我在西雅图(在亚马逊附近)并且我的服务器在加州。

问题是,如果我离开页面几分钟然后重新加载,事情又会回到原点,CloudFront 比原始服务器更糟糕。这是预期的吗?东西会这么快地从 CDN“缓存”中掉出来吗?

我的设置中是否有可能影响性能?或者 CDN 只会对当前平均每隔几秒访问一次的内容产生净正面影响?

(从 AWS 论坛交叉发布,因为我一直被 SO 的周转时间宠坏了)

更新:

如果您对 CloudFront 性能有疑问,下面有两个很好的答案值得一看。我最近发现没有提到我的具体问题的一种解释。作为疏忽,我在 5 分钟时离开了 TTL。由于我也在使用自定义源,因此需要额外往返权威名称服务器以将其解析为实际的 Amazon CloudFront 域。现在 TTL 设置又回到了 12 小时,长负载似乎很少发生。

cdn amazon-cloudfront

9
推荐指数
2
解决办法
8458
查看次数

如何在同一域中同时使用 AWS CloudFront 和 API Gateway?

我将我网站的静态资产放在 S3 上,并设置 CloudFront 来分发它们。这些本质上包含用户在我的站点上的任何 GET 请求所需的内容,即现有路径,即包含错误的包罗万象。

我还有一些 POST 请求需要处理。表单提交、发送电子邮件、通知、与数据库交互。

我如何为同一域与 CloudFront 并排设置 Lambda(或 API 网关),以便 CloudFront 处理 GET 请求,而 API Gateway 处理带有正文或 POST 请求的请求。或者我可以以某种方式通过单个 URL 来完成吗?

amazon-cloudfront amazon-web-services amazon-api-gateway

9
推荐指数
2
解决办法
1万
查看次数

在 DDoS 攻击期间,是否可以避免 AWS S3 或云前端的无效请求成本?

互联网上有很多教程,通过 AWS S3 + AWS Cloudfront (+ Cloudflare) 促进静态网站的廉价托管。

例如:


我查看了 AWS 服务的定价结构,在 S3 或 Cloudfront 的情况下,我认为不可能限制与无效请求相关的成本,因为亚马逊也在对无效或被阻止请求产生的流量和请求进行计费。

即使使用可以阻止特定 IP 地址范围的 Amazon WAF 也不会对您有帮助,因为请求者仍应收到“拒绝访问”消息或类似消息。


无效请求将导致:

  1. 对不存在的对象的请求
  2. 用例“提供私人内容”
    • 缺少签名 URL/签名 cookie 的参数
    • 错误的 IAM/隐身凭证

定价(北弗吉尼亚州的 S3 / Cloudfront USA;2018-03-25)

---------------------------------------------------------------------------------------
- service      -   # requests type                         -           pricing        -
---------------------------------------------------------------------------------------
- S3           -   1000 PUT/COPY/POST requests             -         0.0050 USD       -
---------------------------------------------------------------------------------------
- S3           -   1000 GET and other requests             -         0.0004 USD       - …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-cloudfront amazon-web-services cloudflare

9
推荐指数
1
解决办法
571
查看次数

AWS 证书管理器通配符证书有什么缺点吗?

假设我正在使用 AWS Certificate Manager 获取example.com用于 AWS CloudFront的证书。我可以指定一个替代域www.example.com并将其指向我的 DNS 中的另一个 CloudFront 分配。

但是 AWS Certificate Manager 还允许我指定一个通配符*.example.com作为备用域,这将允许我将来设置我的 DNS 以路由blog.example.com到另一个 CloudFront 分配,如果我决定需要的话。

添加通配符域(例如*.example.comAWS Certificate Manager)是否有任何不利之处?是不是更贵了?它是否以某种方式使我的配置不灵活?为什么我不想总是将通配符指定*.example.com为备用域,因为这使我可以灵活地在将来随时添加子域?

amazon-cloudfront ssl-certificate amazon-web-services wildcard-subdomain amazon-acm

9
推荐指数
1
解决办法
2846
查看次数

使用托管 CORS-With-Preflight 策略对 CloudFront 分配的 OPTIONS 请求返回 403

我有一个 CloudFront 发行版,其默认行为配置为允许任何 CORS 请求,包括预检请求。但是,OPTIONS 请求将失败并出现 HTTP 403 错误(详细信息如下),这不是我所期望的。

\n

我正在使用 AWS 管理的CORS-With-Preflight策略,该策略应允许所有 CORS 请求,包括预检 (OPTIONS) 请求:

\n\n

(我不确定为什么 \xe2\x80\x9cOrigin 请求策略\xe2\x80\x9d 区域以黄色突出显示。)

\n

政策详情:

\n\n

我已在行为中允许 OPTIONS 请求:

\n\n

但是,当我发送选项请求时,CloudFront 将返回此错误:

\n
$ curl --request OPTIONS --url https://d3qj3h7hjzomrd.cloudfront.net/ --header \'Origin: https://www.example.com\'\n\n<?xml version="1.0" encoding="UTF-8"?>\n<Error>\n    <Code>AccessForbidden</Code>\n    <Message>CORSResponse: This CORS request is not allowed. This is usually because the evalution of Origin, request method / Access-Control-Request-Method or Access-Control-Request-Headers are not whitelisted by the resource\'s CORS spec.</Message>\n    <Method>OPTIONS</Method>\n    <ResourceType>OBJECT</ResourceType>\n …
Run Code Online (Sandbox Code Playgroud)

amazon-cloudfront amazon-web-services cors

9
推荐指数
1
解决办法
4977
查看次数

使用 EC2 作为 Cloudfront 源服务器

亚马逊最近添加了使用任何服务器作为 Cloudfront 源服务器的功能,消除了最初的仅限 S3 的限制。

我的问题是 - 我该如何设置?AWS web-gui 似乎只支持 S3 存储桶(仍然),并且 ec2 命令行工具似乎没有任何用于注册 Cloudfront 发行版的东西。

任何想法非常感谢!

谢谢,克里斯。

cdn amazon-cloudfront amazon-ec2

8
推荐指数
2
解决办法
1万
查看次数

模拟在中国防火墙后面的最佳方式是什么?

我们的 iOS 应用程序存在问题,该应用程序使用应用程序内购买来解锁可下载的内容 - 但似乎仅来自中国。出于这个原因,我们看到来自中国的许多负面评论。

我们的应用内购买过程涉及访问托管在 DigitalOcean 上的 https 服务器,该服务器验证收据并发回 Amazon CloudFront URL 以供下载。

我已经通过 greatfire.org 检查了我们的服务器,它恢复为绿色。CloudFront 或直接 S3 链接似乎也没有被阻止。

我已经在 PureVPN 上设置了一个帐户并使用了他们的一台中国服务器(通过它们发送所有流量),但是我不确定这些服务器是否真的在中国,因为下载过程有效,我可以访问 Gmail/Facebook/NYTimes .

我可以模拟在中国防火墙后面的最佳方式是什么?

ssl firewall https china amazon-cloudfront

8
推荐指数
0
解决办法
826
查看次数

阻止 Cloudfront 将部分路径转发到源服务器

背景: 我有一个 S3 存储桶(Origin 1),它使用 Cloudfront 在域下提供静态网站example.com

目标:

另外我想example.com/subfolder提供来自second.com(Origin 2)的内容。为使以下内容为真example.com/subfolder = second.com

现在:

在Cloudfront发行版下,我设置了具有行为的Origin 1Default (*) 和具有行为的Origin 2/subfolder*

问题:

去的时候example.com/subfolder我正在接受服务second.com/subfolder

问: 如何以及在哪里调整 Cloudfronts 行为以不转发 URL 的第一部分。

amazon-cloudfront amazon-web-services

8
推荐指数
1
解决办法
1万
查看次数

仅使用 CloudFront 来启用 https 有意义吗?

如果我有一个运行 Web 应用程序 (HTTP) 的 EC2 实例,并且有 Amazon 提供的 SSL 证书,我可以使用 CloudFront 使 EC2 实例可通过 HTTPS 访问,自动处理证书。这是 CloudFront 的合法使用,还是应该以不同的方式进行?

https amazon-cloudfront amazon-web-services

8
推荐指数
1
解决办法
1681
查看次数