我想从S3提供我的静态/媒体内容(现在的图像),但我的网址应该像现在一样。例如:
http://example.com/resources/img/me.jpg 是我当前的图像网址之一,现在从本机服务器(EBS存储附带EC2)提供。现在我想将这个me.jpg文件存储在一个s3桶中,然后如果有人输入上面的url,就会从那里输入。
我知道这可以通过创建一个名为example.com和www.example.com的存储桶名称,然后为 s3-website-region.amazonaws.com <配置Route 53 CNAME(别名) / p>
但是当我输入http://example.com/blog/cool-stuff-blog时会发生什么? 这不适用于静态/媒体内容!它需要执行服务器端代码(Python / PHP)。
但是,根据我当前工作域的上述配置,会发生什么?它不会尝试从S3提供一些内容并失败吗?
我怎样才能完成它?请不要说有一个像static.example.com这样的子域,并提供所有静态文件请求。对我来说现在是不可接受的。我想使用完全相同的域名。
答案 0 :(得分:4)
创建CloudFront分配。
配置2个“origin”服务器,一个是您的主服务器,另一个是S3存储桶。
配置默认*
路径模式以路由到主服务器,并配置/resources/*
以指向您的存储桶(或您需要的任何路径,您可以配置多个)。
CloudFront会根据路径模式匹配每个请求,并根据第一个匹配模式将每个请求转发到相应的后端。
如果您不想使用CloudFront的缓存功能,可以通过配置“将所有请求标头转发到源”选项来禁用它。
将您的域名添加到与您的分发相关联的备用域名列表中。
选择适合您的工作量和预算的CloudFront定价层 - 如果不是您的受众,则可以通过禁用更昂贵的CloudFront边缘位置来降低成本。
经过测试,将您的域名指向CloudFront分配,并在Route 53中使用别名A记录。
如果要通过单个主机名从多个存储桶或后端服务器群集中提供来自不同路径的内容,还可以添加其他“来源”。
答案 1 :(得分:1)
就个人而言,我认为更新网址并使用子域名是更好的方法(仅用于记录),但您应该能够在Web服务器配置中使用重写规则来完成您想要的任务。