Azure 儲存體中的靜態網站裝載 \(機器翻譯\)
您可以直接從名為 $web 的儲存體容器提供靜態內容 (HTML、CSS、JavaScript 和影像檔)。 在 Azure 儲存體中託管內容可讓您使用無伺服器架構,其中包括 Azure Functions,以及其他平台即服務 (PaaS) 服務。 當您不需要網頁伺服器轉譯內容時,Azure 儲存體靜態網站裝載是絕佳的選項。
靜態網站具有一些限制。 例如,如果您想要設定標頭,必須使用 Microsoft Azure 內容傳遞網路 (Azure CDN)。 無法將標頭設定為靜態網站功能本身的一部分。 此外,不支援 AuthN 和 AuthZ。
如果這些功能對您的案例很重要,請考慮使用 Azure Static Web Apps。 這是靜態網站的絕佳替代方案,也適用於不需要 Web 伺服器轉譯內容的情況。 您可以設定標頭,且完全支援 AuthN/AuthZ。 Azure Static Web Apps 也提供完全受控的持續整合和持續傳遞 (CI/CD) 工作流程,涵蓋 GitHub 來源到全域部署。
如果您需要 web 伺服器以轉譯內容,您可以使用 Azure App Service。
設定靜態網站
靜態網站裝載是您必須在儲存體帳戶上啟用的功能。
若要啟用靜態網站代管,請選取您的預設檔案名稱,然後選擇性地提供自訂 404 頁面的路徑。 如果名為 $web 的 Blob 儲存體容器尚未存在於帳戶中,系統會為您建立一個。 將您的網站檔案新增至此容器。
如需逐步指引,請參閱在 Azure 儲存體中託管靜態網站。
$web 容器中的檔案會區分大小寫,透過匿名存取要求提供,而且只能透過讀取作業才能提供。
上傳內容
您可以使用這些工具的其中一項,將內容上傳至 $web 容器:
檢視內容
使用者可以使用網站的公用 URL,從瀏覽器檢視網站內容。 您可以使用 Azure 入口網站、Azure CLI 或 PowerShell 來尋找 URL。 請參閱尋找網站 URL。
當您啟用靜態網站代管時指定的索引文件,會在使用者開啟網站但未指定特定檔案時顯示 (例如:https://contosoblobaccount.z22.web.core.windows.net
)。
如果伺服器傳回 404 錯誤,而且您在啟用網站時未指定錯誤文件,則會將預設的 404 頁面傳回給使用者。
注意
靜態網站不支援Azure 儲存體的跨原始來源資源分享 (CORS) 支援。
次要端點
如果您已設定次要地區的備援,您也可以使用次要端點存取網站內容。 資料會以異步方式複寫至次要地區。 因此,次要端點上可用的檔案不一定會與主要端點上可用的檔案同步。
在 Web 容器上設定存取層級的影響
您可以修改 $web 容器的匿名存取層級,但進行這項修改不會影響主要的靜態網站端點,因為這些檔案是透過匿名存取要求來提供。 這表示所有檔案的公用 (唯讀) 存取權。
雖然主要靜態網站端點不受影響,但對匿名存取層級的變更會影響主要 Blob 服務端點。
例如,如果您將 $web 容器的匿名存取層級從私人 (無匿名存取) 變更為 Blob (僅限 Blob 的匿名讀取存取),則主要靜態網站端點的匿名存取層級https://contosoblobaccount.z22.web.core.windows.net/index.html
不會變更。
不過,主要 Blob 服務端點 https://contosoblobaccount.blob.core.windows.net/$web/index.html
的匿名存取會變更,讓使用者能夠使用這兩個端點中的其中一個來開啟該檔案。
使用儲存體帳戶的匿名存取設定來停用儲存體帳戶上的匿名存取,不會影響裝載在該儲存體帳戶中的靜態網站。 如需詳細資訊,請參閱補救 Blob 資料的匿名公用讀取存取權 (Azure Resource Manager 部署)。
將自訂網域對應至靜態網站 URL
您可以透過自訂網域提供靜態網站。
您可以更輕鬆地啟用自訂網域的 HTTP 存取,因為 Azure 儲存體提供原生支援。 若要啟用 HTTPS,您必須使用 Azure CDN,因為 Azure 儲存體原本就不支援使用自訂網域的 HTTPS。 如需逐步指引,請參閱將自訂網域對應至 Azure Blob 儲存體端點。
如果儲存體帳戶設為需要透過 HTTPS 的安全傳輸,則使用者必須使用 HTTPS 端點。
提示
請考慮在 Azure 上託管您的網域。 如需詳細資訊,請參閱在 Azure DNS 中託管您的網域。
新增 HTTP 標頭
沒有任何方法可以將標頭設為靜態網站功能的一部分。 不過,您可以使用 Azure CDN 以新增標頭和附加 (或覆寫) 標頭值。 請參閱 Azure CDN 的標準規則引擎參考。
如需使用標頭以控制快取的詳細資訊,請參閱使用快取規則控制 Azure CDN 快取行為。
多區域網站裝載
如果您打算在多個地理位置裝載網站,建議您使用區域快取的內容傳遞網路。 如果您想要在每個區域中提供不同的內容,請使用 Azure Front Door。 它也提供容錯移轉功能。 如果您打算使用自訂網域,則不建議使用Azure 流量管理員。 由於 Azure 儲存體如何驗證自訂功能變數名稱,因此可能會發生問題。
權限
能夠啟用靜態網站的許可權是 Microsoft。儲存體/StorageAccounts/blobServices/write 或共用金鑰。 提供此存取權的內建角色包括儲存體帳戶參與者。
定價
您可以免費啟用靜態網站代管。 您只需要支付您的網站所使用的 Blob 儲存體和作業成本。 如需 Azure Blob 儲存體價格的詳細資訊,請參閱 Azure Blob 儲存體定價頁面。
計量
您可以在靜態網站頁面上啟用計量。 啟用計量之後,計量儀表板會報告與 $web 容器中檔案有關的流量統計資料。
若要在您的靜態網站頁面上啟用計量,請參閱在靜態網站頁面上啟用計量。
功能支援
啟用 Data Lake Storage Gen2、網路檔案系統 (NFS) 3.0 通訊協定,或 SSH 檔案傳輸通訊協定 (SFTP),可能會影響到此功能的支援。 如果您已啟用上述任何功能,請參閱 Azure 儲存體帳戶中的 Blob 儲存體功能支援,以評估此功能的支援。
常見問題集 (FAQ)
Azure 儲存體防火牆是否可與靜態網站搭配使用?
是。 儲存體帳戶網路安全性規則 (包括 IP 型和 VNET 防火牆) 可用於靜態網站端點,並且可用來保護您的網站。
靜態網站是否支援 Microsoft Entra ID?
否。 靜態網站僅支援對 $web 容器中的檔案進行匿名讀取存取。
如何使用自訂網域搭配靜態網站?
您可以使用 Azure 內容傳遞網路 (Azure CDN) 來設定自訂網域與靜態網站。 Azure CDN 可從世界各地為您的網站提供一致的低延遲性。
如何使用自訂安全通訊端層 (SSL) 憑證搭配靜態網站?
您可以透過 Azure CDN 來設定自訂 SSL 憑證搭配靜態網站。 Azure CDN 可從世界各地為您的網站提供一致的低延遲性。
如何新增靜態網站的自訂標頭和規則?
您可以使用 Azure CDN - Verizon Premium 來設定靜態網站的主機標頭。 我們很樂意聽到您的意見反應這裡。
為什麼我會從靜態網站收到 HTTP 404 錯誤?
如果您使用不正確的大小寫來參考檔案名,就會發生 404 錯誤。 例如,Index.html
不要這樣撰寫:index.html
。 靜態網站的 URL 中的檔案名稱和副檔名需區分大小寫,即使透過 HTTP 提供也一樣。 如果您的 Azure CDN 端點尚未佈建,也可能會發生這種情況。 在佈建新的 CDN 之後,請等候 90 分鐘,讓傳播完成。
為何網站的根目錄未重新導向至預設的索引頁面?
在 Azure 入口網站中,開啟您帳戶的 [靜態網站設定] 頁面,並找出在 [索引文件名稱] 欄位中設定的名稱和副檔名。 請確定此名稱與儲存體帳戶的 $web 容器中包含的檔案名稱完全相同。 靜態網站的 URL 中的檔案名稱和副檔名需區分大小寫,即使透過 HTTP 提供也一樣。