Azure 存储中的静态网站托管

可以直接通过名为 $web 的存储容器提供静态内容(HTML、CSS、JavaScript 和图像文件)。 通过将内容托管在 Azure 存储中,你可以使用无服务器体系结构,包括 Azure Functions 和其他平台即服务 (PaaS) 服务。 如果你不需要 Web 服务器来呈现内容,Azure 存储静态网站托管是一个不错的选择。

如果需要 Web 服务器来呈现内容,可以使用 Azure 应用服务

设置静态网站

静态网站托管是必须在存储帐户上启用的一项功能。

若要启用静态网站托管,请选择默认文件的名称,然后可以提供自定义 404 页面的路径。 如果帐户中尚不存在名为 $web 的 blob 存储容器,则会为你创建一个。 将站点的文件添加到此容器。

有关分步指南,请参阅在 Azure 存储中托管静态网站

Azure Storage static websites metrics metric

$web 容器中的文件区分大小写,通过匿名访问请求来提供,只能在读取操作中使用。

上传内容

可以使用下列工具中的任何一种将内容上传到 $web 容器:

查看内容

用户可以在浏览器中使用网站的公共 URL 来查看站点内容。 可以使用 Azure 门户、Azure CLI 或 PowerShell 查找 URL。 请参阅查找网站 URL

当用户打开站点并且未指定特定文件(例如 https://contosoblobaccount.z22.web.core.chinacloudapi.cn)时,将出现在启用静态网站托管时指定的索引文档。

如果服务器返回 404 错误,并且你在启用网站时未指定错误文档,则会向用户返回默认 404 页面。

辅助终结点

如果在次要区域中设置冗余,则还可以使用辅助终结点访问网站内容。 数据将以异步方式复制到次要区域。 因此,辅助终结点上可用的文件并不总是与主终结点上可用的文件同步。

设置 Web 容器的访问级别会造成的影响

可以修改 $web 容器的匿名访问级别,但进行此修改不会影响主静态网站终结点,因为这些文件通过匿名访问请求来提供。 这意味着对所有文件的公共(只读)访问权限。

尽管主静态网站终结点不受影响,但更改匿名访问级别会影响主 blob 服务终结点。

例如,如果将 $web 容器的匿名访问级别从“专用(不允许匿名访问)”更改为“Blob (仅允许匿名读取 blob)”,则对主静态网站终结点 https://contosoblobaccount.z4.web.core.chinacloudapi.cn/index.html 的匿名访问级别不会更改。

但是,对主 blob 服务终结点 https://contosoblobaccount.blob.core.chinacloudapi.cn/$web/index.html 的匿名访问会发生更改,这使用户能够使用这两个终结点之一来打开该文件。

使用存储帐户的匿名访问设置禁用对此存储帐户的匿名访问不会影响该存储帐户中托管的静态网站。 有关详细信息,请参阅修正对 blob 数据的匿名读取访问(Azure 资源管理器部署)

将自定义域映射到静态网站 URL

你可以使静态网站可通过自定义域进行访问。

为自定义域启用 HTTP 访问更为容易,因为 Azure 存储原本就支持它。

如果将存储帐户配置为通过 HTTPS 要求进行安全传输,则用户必须使用 HTTPS 终结点。

提示

考虑在 Azure 上托管域。 有关详细信息,请参阅在 Azure DNS 中托管域

定价

可以免费启用静态网站托管。 只会针对你的站点利用的 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 容器中文件的匿名读取访问

为什么会从静态网站收到 HTTP 404 错误?

如果使用错误的大小写引用文件名,则会发生 404 错误。 例如,Index.html 而非 index.html。 静态网站的 URL 中的文件名和扩展名区分大小写,即使通过 HTTP 提供也是如此。 如果尚未预配 Azure CDN 终结点,也会发生这种情况。 预配新的 CDN 后,最长等待 90 分钟,以完成传播。

为什么网站的根目录不重定向到默认索引页?

在 Azure 门户中,打开帐户的静态网站配置页,并查找在“索引文档名称”字段中设置的名称和扩展名。 确保此名称与位于存储帐户的 $web 容器中的文件的名称完全相同。 静态网站的 URL 中的文件名和扩展名区分大小写,即使通过 HTTP 提供也是如此。

后续步骤