Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 修改CDN迁移路径_Amazon S3_Cdn_Amazon Cloudfront - Fatal编程技术网

Amazon s3 修改CDN迁移路径

Amazon s3 修改CDN迁移路径,amazon-s3,cdn,amazon-cloudfront,Amazon S3,Cdn,Amazon Cloudfront,我正在尝试将CDN从rackspace迁移到aws 在前者中,所有内容都通过CNAME记录映射到单个容器,如下所示: container1 = CNAME = container1.cdndomain container2 = CNAME = container2.cdndomain container3 = CNAME = container3.cdndomain 当我们设置aws时,我读到的所有内容都说设置了一个(唯一的)cloudfront,带有

我正在尝试将CDN从rackspace迁移到aws

在前者中,所有内容都通过CNAME记录映射到单个容器,如下所示:

container1  =   CNAME   =   container1.cdndomain
container2  =   CNAME   =   container2.cdndomain
container3  =   CNAME   =   container3.cdndomain
当我们设置aws时,我读到的所有内容都说设置了一个(唯一的)cloudfront,带有各种桶。我就是这么做的

现在我正试图以某种方式将所有这些容器重新映射到它们的新aws主页和相应的“bucket”中,但是单一的cloudfront让我很难做到这一点

我不希望遍历数千行代码和配置文件,并更改所有当前URL(例如,手动将container1.cdndomain更改为cdndomain/container1)

但我找不到重新映射的方法

this:  http://bgimgs.cdndomain/image
到它的对应物

here:   http://cdndomain/bucket/image
我们将Zerigo用于DNS,接口将接受此CNAME路径:

container.domain  =  CNAME = cdndomain/bucket
但是aws没有将其路由到正确的桶

我尝试了一个.htaccess解决方案

RewriteEngine On
RewriteCond %{HTTP_HOST} ^container1\.cdndomain(.*)$ [NC]
RewriteRule ^(.*)$ http:\/\/cdndomain/container1/$1 [L,R=301]
但这也不起作用


有什么想法吗

我不知道建议从何而来,只使用一个带有多个S3存储桶的CloudFront发行版。当然,你可以,但如果它不符合你的需要,你没有理由这样做

只需创建多个发行版

如果您已经使用不同的主机名访问它们,它们是不同的对象集合,那么我想不出有什么理由这样的建议适用于您的情况。我想到的建议您只使用一个具有多个存储桶的CloudFront发行版的唯一原因是,将所有内容(来自不同存储桶)存储在一个主机名后面,或者存储在具有每个主机名使用的相同路径的多个主机名后面(让浏览器更快地加载资源的一种方法是让浏览器相信这些资源都来自不同的主机,因此浏览器将打开更多的并行连接)

在您的情况下,这似乎根本不是您所需要的。发行版本身是免费的。问题解决了

关于DNS,其他供应商可能接受该配置,但这并不意味着它是有效的配置。它不是。您不能使用DNS更改路径


关于
.htaccess
,S3不会处理
.htaccess
文件。如果您在web服务器上创建这些文件,那也是不可能的,因为web服务器不会看到请求以便重定向它们。

谢谢您的回答,Michael。关于DNS,您是对的。它实际上没有路由/*。我确实设置了在cdndomain创建一个域,所以我完全有能力在该域定义一个.htaccess。除了重写所有链接或设置一组cloudfronts之外,我还没有找到其他解决方案。这些可能只是唯一的方法。根据你已经准备好的,我看不到其他直接、简单、有弹性的解决方案……但我没有只看到创建多个cloudfront发行版没有问题,我看不到尝试避免它的显著优势,因为您现有的代码已经在访问不同的主机名。当然,在EC2上的HAProxy与您的S3存储桶位于同一区域,配置为cloudfront自定义源,这将很容易实现(然后中继到铲斗)因为HAProxy允许基于
主机:
头选择目的地路由和URL重写,Cloudfront可以配置为转发到自定义源。当然,增加的灵活性是以增加复杂性为代价的。但这是我在某些场景中用于重写路径或在前往S3的途中选择存储桶的解决方案。(一个区域内的EC2/S3流量是免费的,因此没有流量成本)。