我想从 S3 提供我的静态/媒体内容(现在是图像),但我的 url 应该是现在的样子。例如:
http://example.com/resources/img/me.jpg 是我当前的图像 url 之一,现在由 native 服务器提供(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 这样的子域并为它提供所有静态文件请求。现在对我来说这是不能接受的。我想使用完全相同的域名。
最佳答案
创建 CloudFront 分配。
配置 2 个“源”服务器,一个作为您的主服务器,另一个作为您的 S3 存储桶。
配置默认的 *
路径模式以路由到您的主服务器,并配置 /resources/*
指向您的存储桶(或您需要的任何路径,您可以配置多个)。
CloudFront 根据路径模式匹配每个请求,并根据第一个匹配模式将每个请求转发到适当的后端。
如果您不想使用 CloudFront 的缓存功能,可以通过将选项配置为“将所有请求 header 转发到源”来禁用它。
将您的域名添加到与您的分配关联的备用域名列表中。
选择适合您的工作负载和预算的 CloudFront 定价层——如果您的受众不在,您可以通过禁用更昂贵的 CloudFront 边缘站点来降低成本。
测试后,将您的域名指向 CloudFront 分配,在 Route 53 中使用 Alias A-Record。
如果您想通过单个主机名从多个存储桶或后端服务器集群的不同路径提供内容,您还可以添加其他“来源”。
关于php - 如何提供来自 s3 的静态/媒体内容(仅)和来自 EC2 的其他内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32360255/