有一次我有这种奇怪的疑惑。
如果我使用 CloudFront 作为我的 CDN,我会按对我的静态文件的请求付费。

所以疑惑来了。是否可以不停地请求同一个文件(使用脚本或其他东西),以提高您的账单?在我看来这是一个相当公平的问题,不是吗?
我S3 CORS用于提供字体。如果S3域名用于提供字体,则在 中有效Firefox,但在CloudFront使用时则无效。与Google Chrome.
我的CORS配置S3
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://*.example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>30000</MaxAgeSeconds>
<AllowedHeader>Content-*</AllowedHeader>
<AllowedHeader>Host</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>https://*.example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>30000</MaxAgeSeconds>
<AllowedHeader>Content-*</AllowedHeader>
<AllowedHeader>Host</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud) 只是一个简单的问题,但我在网上找不到明确的答案。当然,cloudfront 有利于在全球范围内提供内容,但是那里的基础设施与 s3 有本质上的不同,所以即使传输距离相同,cloudfront 通常会更快?
我们有一个通配符证书,适用于我们在这里工作时使用的多个云前端主机(全部或大部分都与 S3 存储桶相关联),但是当使用 SSL 访问时,我的浏览器会产生一个 NET::ERR_CERT_COMMON_NAME_INVALID。
这是完整的消息:
你的连接不是私人的
攻击者可能试图从 api.assets.portablenorthpole.com 窃取您的信息(例如,密码、消息或信用卡)。NET::ERR_CERT_COMMON_NAME_INVALID
该服务器无法证明它是 api.assets.portablenorthpole.com;它的安全证书来自 *.portablenorthpole.com。这可能是由于配置错误或攻击者拦截了您的连接造成的。
奇怪的是,“ https://assets.portablenorthpole.com/ ”的配置是相同的,并且使用相同的 SSL。两者都使用 SNI 并具有相似的配置,但无法正确响应。
你能给我一个提示要搜索什么吗?
有没有办法根据位置将 CloudFront 指向不同的源服务器?
我们目前使用基于 Route53 延迟的路由将流量定向到东部或西部区域弹性负载均衡器。如果我们部署 CloudFront,听起来分布要求我们选择单个弹性负载均衡器作为源。
两个 CloudFront 分配:
我尝试的选项是拥有两个单独的 CloudFront Web 分配,一个用于 s3 存储桶中的静态站点(A 版本),另一个用于 s3 存储桶中的另一个静态站点(B 版本)。我尝试使用 Route53 加权路由策略,其中我为 www.domain.com Route53 记录添加了两条记录,一条指向权重为 0 的 CloudFront Distribution A,另一个指向权重为 0 的 CloudFront Distribution B。我想做 A/B 测试。
使用 www.domain.com 作为 Prod 发行版 A 的备用 CNAME。
使用 *.domain.com 作为 Prod 分发 B 的备用 CNAME。
我的内容总是由 A 提供。我希望它以相等的比例从两个版本提供。
有什么帮助吗?
我通常使用 S3 上的前端单页应用程序和服务器上的后端 API 来开发我的应用程序,通常是弹性 beantalk(所以 ELB + EC2)。我对将什么放在我的 ELB 和 S3 前面的好选择感到困惑 - 主要是 CloudFront 或 API 网关。我现在的主要需求是缓存和性能(减少服务器负载)。当然成本也会是奖金。就我而言,流量通常仅限于一个地区/国家(新加坡)。
所以假设我想保留一个域,我想我肯定会需要 CloudFront?因此 CloudFront 将有 2 个来源 S3 和 ELB。S3 源可以配置长缓存 TTL 和 ELB 较短的缓存,只是为了处理峰值。这是一个好主意吗?
但是如果某些 API,尤其是列表 API 不应该被缓存呢?如果我将 TTL 设置为 0,它不会缓存,但我的理解是它更慢?如何最好地处理这些?
也就是说,我什么时候使用 API 网关?假设我不需要所有 SDK 的东西并且我当前的系统仍在 ELB/EC2 上。在我的情况下,它似乎只是一个代理和缓存系统,就像 cloudfront 一样?
我知道我们可以将 expires 标头设置为 Amazon S3,但是如何为 cloudfront 文件设置它?我读过我们可以将 TTL 从 24 小时设置为 1 小时,但我想将其设置为 1 年。
我正在尝试构建个人 CDN 以与我的联系人共享静态文件。该设计包括一个 S3 存储桶、一个 CloudFront 分配和一个通过 Route53 注册的子域,所有这些都使用 Terraform 进行配置。
但是,我可以通过 S3 和 Cloudfront 访问我的文件,但不能通过我的子域 ( cdn.adamatan.com)。
curl http://cdn.adamatan.com.s3.amazonaws.com/index.html
Run Code Online (Sandbox Code Playgroud)
curl https://d36tl9ayobqfgg.cloudfront.net/index.html
Run Code Online (Sandbox Code Playgroud)
我无法使用子域获取文件。此外,nslookupforcdn.adamatan.com和adamatan.con不起作用。我认为我以某种方式错误地配置了 Route53。
variable "hosted_zone" {
default = "adamatan.com"
}
variable "domain" {
default = "cdn.adamatan.com"
}
variable "aws_region" {
default = "us-east-1"
}
provider "aws" {
region = "${var.aws_region}"
profile = "personal"
version = "~> 1.1"
}
/*
The S3 bucket storing …Run Code Online (Sandbox Code Playgroud) 这是一个例子:http : //tools.pingdom.com/fpt/#!/cp0wwy/http : //www.shearcomfort.com/Car-Seat-Covers_CDN.asp
选择任何图像,2014_subaru_outback_mini.jpg然后你可以看到它出现两次:一次来自 cloudfront 0 字节,第二次来自实际域shearcomfort.com
任何人都可以解释这里发生了什么以及如何使所有资产仅来自云端而不是来自主域?
我对我的 angularjs2 应用程序所需的设置感到非常困惑。
它只是一个带有 html5 模式网址的 SPA 应用程序,我想要的是:
www.mydomain.com/blabla...将被重定向到同一个 mydomain 但没有 wwwmydomain.com/anything/including/path/like/this将提供 s3 (/cloudfront)index.htmlmydomain.com/path/or/not/path/file_that_ends_with_any_extesnion_like.js,请求将从 s3 (/cloudfront) 提供该文件,我也可以设置我的网站,以便所有资产都在资产文件夹中,因此请求mydomain.com/assets/path/blabla.bla将从 s3 (/cloudfront) 提供静态文件mydomain.com/api/...将重定向到包含我的 REST API node.js 服务器的 ec2 实例通常我只会在 nginx 和 node.js 中使用 1 个 ec2 实例,try_files如果它失败,它会提供index.html文件,如果 url 是/api/..它,它将请求重定向到位于同一个 ec2 上的 api
该设置的问题在于,如果您有 1 个以上的 ec2 实例,它就不能很好地扩展并且难以维护
我在谷歌上看了很多,但找不到任何关于如何设置类似于我在 AWS 云中描述的内容的指南或博客文章。
提前致谢 :)
amazon-s3 amazon-cloudfront amazon-ec2 amazon-web-services amazon-route53
我有一个在 s3 上托管的静态网站,使用 cloudfront 分发。我已经找到了很多关于重定向到 www 的答案,在 s3 前面只有路由 53,但没有关于如何使用 cloudfront 做到这一点。
我尝试了很多不同的东西,但没有一个是 301 重定向到 www,只有别名。
有些人创建了一个 CloudFront CDN 来代理我的网站,这样人们就可以使用 url 来访问我的网站,df03039lsls933.cloudfront.net而不是www.example.com
如何使用 nginx 阻止它?
从 CloudFront 文档,它说..
Host: CloudFront sets the value to the domain name of the origin that is
associated with the requested object.
Run Code Online (Sandbox Code Playgroud)
所以我不能通过使用host标题来阻止,另一种方法是什么?
(CloudFront 只是一个例子,我想用类似的方法阻止所有 CDN)