本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
指定預設根物件
您可以設定 CloudFront ,在使用者URL為您的分佈請求根時傳回特定物件 (預設根物件),而不是在您的分佈中請求物件。指定預設根物件能讓您避免暴露分佈的內容。
如何指定預設根物件
為了避免暴露分佈的內容或傳回錯誤,請完成以下步驟為您的分佈指定預設根物件。
指定分佈的預設根物件
-
上傳預設根物件到您分佈指向的原始伺服器。
檔案可以是 支援的任何類型 CloudFront。如需檔案名稱的限制清單,請參閱 中
DefaultRootObject
元素的描述DistributionConfig。注意
如果預設根物件的檔案名稱太長或包含無效的字元, 會 CloudFront 傳回錯誤
HTTP 400 Bad Request - InvalidDefaultRootObject
。此外, 會 CloudFront 快取程式碼 10 秒 (預設),並將結果寫入存取日誌。 -
確認物件的許可 CloudFront 授予至少
read
存取權。如需 Amazon S3 許可的詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南中的 Amazon S3 中的身分和存取管理。
-
使用CloudFront 主控台或 更新您的分佈以參考預設根物件 CloudFront API。
若要使用 CloudFront 主控台指定預設根物件:
登入 AWS Management Console 並在 開啟 CloudFront 主控台https://console.aws.amazon.com/cloudfront/v4/home
。 -
在上方窗格中的分佈清單裡,請選取分佈來更新。
-
在 Settings (設定) 窗格中的 General (一般) 標籤,選擇 Edit (編輯)。
-
在 Edit settings (編輯設定) 對話方塊的 Default root object (預設根物件) 欄位中,輸入預設根物件的檔案名稱。
只輸入物件名稱,例如,
index.html
。不要在物件名稱前新增/
。 -
選擇 Save changes (儲存變更)。
若要使用 更新組態 CloudFront API,您可以為分佈中的
DefaultRootObject
元素指定值。如需使用 CloudFront API指定預設根物件的相關資訊,請參閱 Amazon 參考 UpdateDistribution 中的 。 CloudFront API -
透過請求您的根 來確認您已啟用預設根物件URL。如果您的瀏覽器不會顯示預設根物件,請執行以下步驟:
-
在 CloudFront 主控台中檢視分佈狀態,以確認您的分佈已完全部署。
-
重複步驟 2 和 3 來驗證您是否已授予正確的許可和驗證您是否正確地更新分佈的組態來指定預設根物件。
-
預設根物件的運作方式
假設以下請求指向物件 image.jpg
:
https://d111111abcdef8.cloudfront.net/image.jpg
相反地,下列請求指向相同分佈URL的根,而不是特定物件,如第一個範例所示:
https://d111111abcdef8.cloudfront.net/
當您定義預設根物件時,呼叫分佈根的最終使用者請求會傳回預設的根物件。例如,如果您指定檔案 index.html
為預設根物件,則請求:
https://d111111abcdef8.cloudfront.net/
傳回:
https://d111111abcdef8.cloudfront.net/index.html
注意
CloudFront 不會判斷URL具有多個尾斜線 (https://d111111abcdef8.cloudfront.net///
) 的 是否等於 https://d111111abcdef8.cloudfront.net/
。您的原始伺服器會進行這項比較。
如果您定義預設根物件時,適用於分佈子目錄的最終使用者請求不會傳回預設的根物件。例如,假設 index.html
是您的預設根物件,並 CloudFront 收到分發 CloudFront下install
目錄的最終使用者請求:
https://d111111abcdef8.cloudfront.net/install/
CloudFront 即使 的複本index.html
出現在install
目錄中, 也不會傳回預設根物件。
如果您將分佈設定為允許 CloudFront 支援的所有HTTP方法,則預設根物件會套用至所有方法。例如,如果您的預設根物件是 index.php,而您編寫應用程式將POST
請求提交到網域的根 (https://example.com),則將請求 CloudFront 傳送至 https://example.com/index.php。
CloudFront 預設根物件的行為與 Amazon S3 索引文件的行為不同。當您配置 Amazon S3 儲存貯體做為網站,並指定索引文件時,Amazon S3 傳回索引文件,即使使用者在儲存貯體中請求子目錄。(索引文件的副本必須出現在每個子目錄)。有關將 Amazon S3 儲存貯體設定為網站以及索引文件的詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的 AmazonS3 上的託管網站一章。
重要
請記住,預設根物件僅適用於您的 CloudFront 分佈。您仍然需要為原始伺服器管理安全性。例如,如果您使用的是 Amazon S3 原始伺服器,您仍然需要ACLs適當地設定 Amazon S3 儲存貯體,以確保儲存貯體上所需的存取層級。
如果您未定義根物件,如何 CloudFront 運作
如果您不定義預設根物件,則分佈根的請求會通過您的原始伺服器。如果您使用 Amazon S3,有可能傳回以下任何情況:
-
Amazon S3 儲存貯體的內容清單 – 在下列任何情況下,任何使用 CloudFront 存取分發的任何人都可看見原始伺服器的內容:
-
您的儲存貯體未設定正確。
-
儲存貯體上的 Amazon S3 許可與您的分佈相關連,且在儲存貯體中物件上把存取權限給予每個人。
-
最終使用者使用您的原始伺服器根 存取您的原始伺服器URL。
-
-
原始伺服器的私有內容清單 – 如果您將原始伺服器設定為私有分發 (只有您 和 CloudFront 具有存取權),則擁有登入資料可透過 存取分發的任何人都可以看見分發相關聯的 Amazon S3 儲存貯體內容 CloudFront。在此情況下,使用者無法透過原始伺服器根 存取您的內容URL。如需有關分佈私有內容的詳細資訊,請參閱提供具有已簽章URLs和已簽章 Cookie 的私有內容。
-
Error 403 Forbidden
- 如果與您分佈相關聯的 Amazon S3 儲存貯體上的許可,或該儲存貯體中物件的許可拒絕對所有人的存取 CloudFront ,則 CloudFront 會傳回此錯誤。