本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
限制內容的地理分佈
您可以使用地理限制 (有時稱為地理區域封鎖),防止特定地理位置的使用者存取您透過 Amazon 分發發 CloudFront 佈的內容。若要使用地理限制,您有兩個選擇:
-
使用地 CloudFront 理限制功能。使用此選項可限制對與分佈相關聯的所有檔案的存取,並限制在國家/地區層級的存取。
-
使用第三方地理位置服務。使用此選項來針對與分佈相關聯檔案的子集作限制存取,或在比國家/地區層級更細的層級作限制存取。
使用 CloudFront 地理限制
當用戶請求您的內容時,無論用戶位於何處, CloudFront 通常都會提供所請求的內容。如果您需要防止特定國家/地區的使用者存取您的內容,您可以使用 CloudFront 地理限制功能執行下列其中一項作業:
-
只有當使用者位於您允許清單上其中一個核准國家/地區時,才能存取您的內容。
-
如果使用者位於您封鎖清單上的被禁國家/地區,則阻止其存取您的內容。
例如,如果要求來自您未獲授權散佈內容的國家/地區,您可以使用 CloudFront 地理限制來封鎖要求。
注意
CloudFront 使用協力廠商資料庫來決定使用者的位置。IP 地址與國家/地區之間的映射的準確性因區域而異。根據最近的測試,整總體準確性為 99.8%。如果 CloudFront 無法判斷使用者的位置,請 CloudFront 提供使用者要求的內容。
以下是地理限制的運作方式:
-
假設您有權僅在列支敦斯登分配您的內容。您可以更新您的CloudFront 發行版,以新增僅包含列支敦士登的允許清單。(或者,您可以新增包含除了列支敦斯登以外的每個國家/地區的封鎖清單。)
-
摩納哥的使用者要求您的內容,並將要求DNS路由至義大利米蘭的 CloudFront 節點。
-
米蘭的邊緣節點會查詢您的分佈,並確定摩納哥的使用者沒有下載您的內容的許可。
-
CloudFront 將HTTP狀態碼傳回
403 (Forbidden)
給使用者。
您可以選擇配置 CloudFront 為將自定義錯誤消息返回給用戶,並且可以指定 CloudFront 要為請求的文件緩存錯誤響應的時間長度。預設值為 10 秒。如需詳細資訊,請參閱為特定HTTP狀態碼創建自定義錯誤頁面。
地理限制適用於整個分佈。如果您需要對部分內容套用一項限制,而對內容的另一部分套用不同的限制 (或無限制),您必須建立個別的 CloudFront 散佈或使用第三方地理定位服務。
如果您啟用 CloudFront 標準記錄檔 (存取記錄),您可以搜尋值 sc-status
(HTTP狀態碼) 所在的記錄項目,以識別 CloudFront 拒絕的要求403
。不過,只使用標準記錄檔時,您無法根據使用者的位置來區分 CloudFront拒絕的要求與 CloudFront 拒絕的要求,因為使用者因為其他原因沒有存取檔案的權限。如果您有第三方地理位置服務 (例如 Digital Element) MaxMind,或者,您可以根據存取記錄中c-ip
(用戶端 IP)欄中的 IP 位址來識別請求的位置。如需 CloudFront 標準記錄檔的詳細資訊,請參閱配置和使用標準日誌(訪問日誌)。
下列程序說明如何使用 CloudFront 主控台將地理限制新增至現有發行版。如需有關如何使用主控台建立分佈的詳細資訊,請參閱建立分發。
若要將地理限制新增至您的 CloudFront Web 分發 (主控台)
登入 AWS Management Console 並開啟 CloudFront 主控台,位於https://console.aws.amazon.com/cloudfront/v4/home
。 -
在導覽窗格中,選擇分佈,然後選擇您要更新的分佈。
-
選擇安全性分頁,然後選擇地理限制。
-
選擇編輯。
-
選擇 Allow list (允許清單) 建立允許的國家/地區清單,或 Block list (封鎖清單) 建立封鎖的國家/地區清單。
-
將所需的國家/地區新增至清單中,然後選擇 Save changes (儲存變更)。
使用第三方地理定位服務
使用 CloudFront 地理限制功能,您可以在國家/地區層級控制您使用指定網頁發佈的所有檔案的內容發佈。如果您有地理限制不符合國家/地區界限的使用案例,或者如果您想要限制只存取您透過特定發行版所提供的某些檔案,您可以結CloudFront 合第三方地理定位服務。這使您不僅可以根據國家/地區,還可以根據城市ZIP,郵政編碼甚至緯度和經度來控制內容。
當您使用第三方地理定位服務時,我們建議您使用 CloudFront signedURLs,您可以使用它指定到期日期和時間,在此日期之後不再有效。URL此外,我們建議您使用 Amazon S3 儲存貯體做為來源,因為之後您可以使用 CloudFront 來源存取控制來防止使用者直接從來源存取您的內容。如需有關已簽署URLs和來源存取控制的詳細資訊,請參閱使用已簽署URLs和簽署的 Cookie 提供私人內容。
以下步驟解釋如何使用第三方地理位置服務來控制對檔案的存取。
使用協力廠商地理定位服務來限制對發佈中檔案的存取 CloudFront
-
使用地理位置服務取得帳戶。
-
將內容上傳至 Amazon S3 儲存貯體。
-
設定 Amazon CloudFront 和 Amazon S3 以提供私有內容。如需詳細資訊,請參閱使用已簽署URLs和簽署的 Cookie 提供私人內容。
-
寫入您的 Web 應用程式,以執行下列動作:
-
將每個使用者請求的 IP 地址傳送到地理位置服務。
-
評估地理位置服務的傳回值,以判斷使用者是否位於您 CloudFront 要發佈內容的位置。
-
如果您想要將內容發佈到使用者的位置,請為您的內容產生已簽署URL的 CloudFront 內容。如果您不想將內容發佈到該位置,請將HTTP狀態碼傳回
403 (Forbidden)
給使用者。或者,您可以配置 CloudFront 為返回自定義錯誤消息。如需詳細資訊,請參閱為特定HTTP狀態碼創建自定義錯誤頁面。
如需詳細資訊,請參閱您所使用的地理位置服務的文件。
-
您可以使用 Web 伺服器變動變數來獲得瀏覽您的網站的使用者的 IP 位址。請注意以下警告:
-
如果您的 Web 伺服器透過負載平衡器無法連線至網際網路,則可以使用 Web 伺服器變數來獲得遠端 IP 地址。不過,此 IP 地址不一定是使用者的 IP 地址。它也可以是代理伺服器的 IP 地址,取決於使用者如何連接到網際網路。
-
如果您的 Web 伺服器透過負載平衡器連線至網際網路,則 Web 伺服器變數可能包含負載平衡器的 IP 地址,而非使用者的 IP 地址。在此設定中,建議您使用
X-Forwarded-For
HTTP標頭中的最後一個 IP 位址。此標頭通常包含多個 IP 地址,其中大部分用於代理或負載平衡器。清單中的最後一個 IP 地址最有可能與使用者的地理位置相關聯。
如果您的 Web 伺服器無法連接到負載平衡器,我們建議您使用 Web 伺服器變數而非 X-Forwarded-For
標頭,以避免 IP 地址詐騙。