你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 存储中的静态网站托管

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

静态网站存在一些限制。 例如,如果要配置标头,则必须使用 Azure 内容分发网络 (Azure CDN)。 无法将标头配置为静态网站功能本身的一部分。 此外,不支持 AuthN 和 AuthZ。

如果这些功能对你的方案很重要,请考虑使用 Azure Static Web Apps。 这是静态网站的绝佳替代方案,也适用于不需要 Web 服务器呈现内容的情况。 可以配置标头,并且完全支持 AuthN/AuthZ。 Azure Static Web Apps 还提供了从 GitHub 源到全局部署的完全托管的持续集成和持续交付 (CI/CD) 工作流。

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

设置静态网站

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

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

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

Azure 存储静态网站指标 - 指标

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

上传内容

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

查看内容

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

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

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

辅助终结点

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

设置 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 资源管理器部署)

将自定义域映射到静态网站 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.Storage/storageAccounts/blobServices/write 或共享式密钥。 提供此访问权限的内置角色包括存储帐户参与者。

定价

可以免费启用静态网站托管。 只会针对你的站点利用的 blob 存储和运营成本进行计费。 如需详细了解 Azure Blob 存储价格,请参阅 Azure Blob 存储定价页

指标

可以在静态网站页面上启用指标。 启用指标后,指标仪表板会报告有关 $web 容器中的文件的流量统计信息。

若要在静态网站页面上启用指标,请参阅在静态网站页面上启用指标

功能支持

启用 Data Lake Storage Gen2、网络文件系统 (NFS) 3.0 协议或 SSH 文件传输协议 (SFTP) 可能会影响对此功能的支持。

如果已启用这些功能中的某一项,请参阅 Azure 存储帐户中的 Blob 存储功能支持,以评估对此功能的支持。

常见问题解答

Azure 存储防火墙是否适用于静态网站?

是的。 存储帐户网络安全规则(包括基于 IP 的和 VNET 防火墙)支持静态网站终结点,并且可用于保护网站。

静态网站是否支持 Azure Active Directory (Azure AD)?

不是。 静态网站仅支持对 $web 容器中文件的匿名公共读取访问。

如何将自定义域与静态网站配合使用?

可以使用 Azure 内容分发网络 (Azure CDN) 在静态网站中配置自定义域。 Azure CDN 在世界各地为网站提供了一致的低延迟。

如何将自定义安全套接字层 (SSL) 证书用于静态网站?

可以使用 Azure CDN 在静态网站中配置自定义 SSL 证书。 Azure CDN 在世界各地为网站提供了一致的低延迟。

如何向静态网站添加自定义标头和规则?

可以使用 Azure CDN - Verizon 高级为静态网站配置主机标头。 我们非常期待你能通过此处提供反馈。

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

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

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

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

后续步骤