簡體   English   中英

Amazon S3 重定向和 Cloudfront

[英]Amazon S3 Redirect and Cloudfront

我正在嘗試使用對象在 S3 上設置 301 重定向,此處引用http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html 我一直有一些問題,似乎無法弄清楚我做錯了什么。

我得到的是一個空白頁(0 字節文件),好像沒有設置“網站重定向位置”元數據值。

我究竟做錯了什么?

此外,這是否適用於 AWS CloudFront?


我的 S3 控制台設置S3 控制台設置

需要注意的幾點:

我有這個設置來托管一個 static 站點。 我正在使用 ssl/https 上傳自己的證書並在雲端分發中設置。 除重定向對象外,所有頁面似乎都可以工作。 我嘗試設置路由規則,但它們似乎在 Cloudfront 中不起作用。

我正在嘗試通過雲端 url 和 s3 url ( https:// s3/users/signet_in})訪問重定向。

對於S3中的類似網站的功能,例如重定向,html錯誤消息和索引文檔,您不能使用REST端點( ${bucket_name}.s3.amazonaws.com${bucket_name}.s3.${region}.amazonaws.com )因為這些功能僅由網站端點提供( ${bucket_name}.s3-website.${region}.amazonaws.com )。

http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html

要使Cloudfront中的行為可用,您需要將Cloudfront配置為使用此端點,而不是通過控制台中的自動完成提供的REST端點。

輸入您的存儲桶的Amazon S3靜態網站托管端點。 此值顯示在Amazon S3控制台的“ 靜態網站托管”下的“ 屬性”頁面上。

以此格式指定存儲桶名稱時,可以使用Amazon S3重定向和Amazon S3自定義錯誤文檔。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DownloadDistS3AndCustomOrigins.html

請注意,Web端點不支持HTTPS,但您可以將Cloudfront配置為使用HTTP從存儲桶中獲取,即使客戶端連接是HTTPS也是如此。


有用的提示:在使用CloudFront進行故障排除和測試更改時,用戶經常會對進行更改和CloudFront開始展示新行為之間的明顯“延遲”感到困惑。 在錯誤頁面的情況下,CloudFront具有默認的5分鍾 錯誤緩存最小TTL ,可防止其將失敗頁面的請求重新發送到原點,並且這是與緩存行為中設置的最小/默認/最大TTL的單獨計時器。 特別是在測試時,您可能希望禁用這些計時器,並使用我在有關明顯Amazon CloudFront Latency的問題的答案中提供的步驟強制重試每個后續返回錯誤的頁面請求。

我遇到了同樣的問題,重定向失敗和零長度文件下載,但沒有使用Cloudfront。

我的根本原因是我的DNS CNAME記錄指向REST端點(static.righto.com.s3-us-west-2.amazonaws.com)而不是網站端點(static.righto.com.s3- website -us-west-2.amazonaws.com)。 更新CNAME記錄修復了我的重定向。

此問題的另一個症狀是缺少頁面顯示XML錯誤頁面而不是HTML錯誤頁面。

本文檔解釋了網站端點和REST端點之間的區別。

如果您來這里尋找解決方案而不使用CloudFront,那么它是:

你可以使用s3cmd(當然是bash腳本)及其參數:

  • --add-header with x-amz-website-redirect-location

例如,此腳本解決了page /about/

s3cmd \
--acl-public \
--add-header "x-amz-website-redirect-location: /about/" \
--no-preserve \
put "./path/to/any/small/file/at/your/local/drive/index.html" "s3://domain.com/about"

此腳本使用文件名復制某些現有文件,而不使用尾部斜杠。 文件包含的內容並不重要,因為瀏覽器會立即重定向。

當您(以及更重要的網絡抓取工具 )嘗試打開頁面/about您時, 301重定向到/about/ 這允許將右頁保持 google,yandex和其他搜索引擎的緩存中。

您可以為多個頁面重復此代碼。 或者,您可以添加搜索文件夾的功能,並為每個文件夾撥打電話。 也許你會很善良地在這里展示:)

您可能希望使用 Lambda@Edge 抽象重定向,並將 lambda 部署到相應的 CloudFront 分發。

S3 不是一個成熟的 Web 服務器,因此本身不支持重定向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM