【问题标题】:Moving Files To Amazon S3 While Keeping URLs在保留 URL 的同时将文件移动到 Amazon S3
【发布时间】:2010-12-26 15:45:47
【问题描述】:

我在这里有点麻烦。我目前有一个由第三方托管服务提供商在共享托管环境中托管的网站。因此,我没有对该网站所在的 IIS 服务器的 root 访问权限。

我目前在网站上有一个目录,比如:

mysite.com/myfiles

“myfiles”目录目前有很多文件。如此多的文件使我超出了主机上的磁盘空间分配。现在有几件事需要考虑:

  1. 主机没有更慷慨的计划供我们升级。他们只愿意向我们收取(非常高的)超额费用。

  2. 我们需要留在这家主机,直到我们与他们的合同到期,也就是将近一年的时间。

我想把这个目录的内容放到 Amazon S3 上,这样可以减轻主机账户的磁盘空间压力。唯一的问题是文件的 URL 需要保持不变!

例如,如果一个外部网站链接到 mysite.com/myfiles/image.jpg,我希望该网站上的图片能够顺利地继续工作。

有什么办法可以实现吗?

【问题讨论】:

    标签: iis amazon-web-services amazon-s3


    【解决方案1】:

    我建议创建一个 S3 存储桶(可能还有一个位于其上的 Cloudfront 发行版),其中填充了与您现有站点相对应的文件夹布局(以供将来迁移)。然后在您的 DNS 中创建一个 CNAME 条目,为您的存储桶/分发分配一个友好的名称(例如 s3.my.domain)。

    然后将 URL 重写器添加到现有站点,将 http://my.domain/myfiles/xxx 的请求转发到匹配的 S3 URL,例如`http://s3.my.domain/myfiles/xxx'。

    当您的托管合同完成后,更改 DNS 以将您的根和 www 条目指向存储桶/分发,或根据需要的其他主机。

    我目前正在使用 Cloudfront 为我的一项业务在地理上缓存静态内容,效果很好;到目前为止零停机时间( ~6  超过 12 个月)。


    2010 年 6 月: Cloudfront 非常出色,比以前的托管安排便宜得多。目前,我们每月只需 120 美元即可处理大约 250 万个请求(约 750GB)。

    【讨论】:

      【解决方案2】:

      您可以通过查看 Amazon S3 的 Virtual Hosting of Buckets 文档找到有关所需内容的信息。您可以自定义用于访问您的 S3 文件的主机名,这可能有助于完成您需要做的事情。

      【讨论】:

        【解决方案3】:

        第一个问题:为什么第三方网站必须拥有指向您网站的完整 URL?他们是否为内容付钱给你?如果他们不为内容付费,您是否可以通过免费向他们提供内容而获得一些好处?这是一个商业决策,也许您会得出这样的结论:支付超额费用来提供该内容是值得的。

        第二个问题:实际上有多少个 URL 是从第三方网站链接的?您可以花时间保持这些 URL 可用,并将其他所有内容切换到 S3 托管。谷歌“链接:”查询可以帮助回答这个问题。

        因此,对于解决方案:如果您能够创建 301 重定向,则第一个解决方案有效。只需为您要移动的每个 URL 设置重定向即可。

        第二种解决方案是反向代理,其中 mysite.com 上的 URL 映射到 mysite.s3.amazon.com。我不确定这是否真的是一个很好的解决方案;您将支付带宽来代理文件。另外,如果您能够设置反向代理,则可以创建 301 重定向。

        第三种解决方案:整体移动您的网站,并将域名映射到 S3(通过 CNAME 映射)。是的,您最终为不再使用的托管服务付费。如果你使用动态内容,它就不会起作用(但也许你每月为 S3 支付 30 美元)。

        最后,不是解决方案,而是前进的道路:为其他静态内容使用不同的域名。该域名可以通过 CNAME 映射到 Amazon 存储桶。

        【讨论】:

        • 对于第三方网站来说,拥有完整的网站 URL 非常重要,因为有许多网站链接回我们的网站,并且在他们的网站中嵌入了实际图像(使用我们的许可)从我们的服务器请求实际图像。我们希望维护这些链接并防止这些图像被破坏。为什么?考虑周到,我猜。第二个问题的答案是,我们无法知道所有这些外部 URL 引用的确切位置。我对 Google 的“链接:”查询的范围或准确性不满意。
        【解决方案4】:

        移动文件并在目录上设置 404 处理程序。 404 处理程序可以将具有 301 或 302 状态的客户端透明地重定向到 S3 url。使用 url 重写的其他建议可能不适用于任何非 aspx 文件,因为您使用的是共享托管服务提供商,并且它们通常不支持通配符 ASP.NET 映射。

        【讨论】:

          猜你喜欢
          • 2013-03-02
          • 2015-02-24
          • 2015-09-01
          • 2012-07-14
          • 2016-03-27
          • 1970-01-01
          • 2017-10-08
          • 2021-11-29
          • 2015-07-12
          相关资源
          最近更新 更多