2009-12-15 57 views
6

我在这里有点苦恼。我目前有一个由第三方托管提供商托管在共享托管环境中的网站。因此,我没有root访问该网站所在的IIS服务器的权限。将文件移动到Amazon S3,同时保持URL

我目前拥有的网站上的目录,如:

mysite.com/myfiles

的“myfiles的”目录目前有很多在它的文件。这么多文件让我把主机上的磁盘空间分配给我。有几件事现在考虑:

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

  2. 我们需要与这位主持人在一起,直到我们与他们的合同即将结束,这距离他们将近一年。

我想将此目录的内容放在Amazon S3上,这样可以减轻主机帐户上的磁盘空间紧张。唯一的问题是URL的文件需要保持不变!

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

是否有任何可能的方法来实现这一目标?

回答

9

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

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

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

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


2010年6月:的Cloudfront一直很好,比以前的托管安排便宜得多。我们目前每月只需要120美元就可以提供约250万个请求(〜750GB)。

0

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

0

第一个问题:为什么第三方网站对您的网站有不间断的网址很重要?他们是否为您购买内容?如果他们不向您收取内容,您是否可以通过免费提供内容获得某些好处?这是一个商业决定,也许你得出结论认为,提供该内容是值得支付超额费用的。

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

因此,要解决方案:如果您有能力创建301重定向,则第一个解决方案将起作用。只需为每个想要移动的网址设置一个重定向。

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

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

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

+1

第三方网站对网站具有完整的网址很重要,因为有多个网站已链接回我们的网站,并且在他们的网站中嵌入了实际图像(经我们许可)来自我们服务器的实际图像我们希望维护这些链接并防止这些图像中断。为什么?为了体贴,我想。 第二个问题的答案是我们无法知道所有这些外部URL的引用是在哪里。我对Google的“链接:”查询的范围或准确性不满意。 – 2009-12-15 02:37:06

0

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