2009-12-15 48 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映射。