php - 如何提供来自 s3 的静态/媒体内容(仅)和来自 EC2 的其他内容?

标签 php amazon-web-services amazon-s3 amazon-ec2 codeigniter-2

我想从 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。

如果您想通过单个主机名从多个存储桶或后端服务器集群的不同路径提供内容,您还可以添加其他“来源”。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html

关于php - 如何提供来自 s3 的静态/媒体内容(仅)和来自 EC2 的其他内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32360255/

相关文章:

php - 如何更频繁地每分钟运行一次 Cronjobs?

amazon-web-services - 多次调用 AWS Lambda Java 函数

wordpress - 如何同时有效地设置 wordpress 和 AWS Amplify?

amazon-s3 - 有没有办法让 index.html 功能与托管在 S3 上的内容一起使用?

php - 如何使用 Php cURL 中的简单上传将上传的文件移动到特定的驱动器文件夹?

php - CodeIgniter:如何将 $this->db->insert_id() 值传递给 Controller 以便插入到另一个表中?

PHP使用foreach循环一组结果

node.js - 使用nodejs knox从s3存储桶中删除所有文件?

java - 如何将 S3 对象直接从 Java Web 服务器流式传输到浏览器

java - 如何通过JAVA API获取AWS Billing指标