你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Blob 存储非常适合存储大量非结构化数据,例如文本、图像和视频。 由于 Blob 存储还提供静态网站托管支持,因此在不需要 Web 服务器呈现内容的情况下,这是一个很好的选择。 尽管只能托管 HTML、CSS、JavaScript 和图像文件等静态内容,但可以使用无服务器体系结构,包括 Azure Functions 和其他平台即服务 (PaaS) 服务。
静态网站存在一些限制。 例如,如果要配置标头,则必须使用 Azure 内容分发网络 (Azure CDN)。 无法将标头配置为静态网站功能本身的一部分。 此外,不支持 AuthN 和 AuthZ。
如果这些功能对你的方案很重要,请考虑使用 Azure Static Web Apps。 这是静态网站的绝佳替代方案,也适用于不需要 Web 服务器呈现内容的情况。 可以配置标头,并且完全支持 AuthN/AuthZ。 Azure Static Web Apps 还提供了从 GitHub 源到全局部署的完全托管的持续集成和持续交付 (CI/CD) 工作流。
如果需要 Web 服务器来呈现内容,可以使用 Azure 应用服务。
先决条件
- 拥有有效订阅的 Azure 帐户。 免费创建帐户。
- Azure 存储帐户资源。 若要了解如何创建存储帐户,请参阅 “创建 Azure 存储帐户”。
设置静态网站
静态网站托管功能在存储帐户中配置,默认情况下未启用。 若要启用静态网站托管,请选择一个存储帐户。 在左侧导航窗格中,请从“数据管理”组中选择“静态网站”,然后选择“启用”。 为“索引文档名称”提供名称。 可以选择提供自定义 404 页面的路径。 最后,选择“保存”以保存配置更改。
如果存储帐户中尚不存在名为 $web 的 Blob 存储容器,则会为你创建该容器。 请将网站的文件添加到 $web 容器,以便通过静态网站的主终结点访问这些文件。
$web 容器中的文件区分大小写,通过匿名访问请求提供,并且只能通过读取操作进行使用。
有关分步指南,请参阅在 Azure 存储中托管静态网站。
上传内容
可以使用以下工具中的任何一种将内容上传到 $web 容器:
查看内容
用户可以使用网站的公共 URL 通过浏览器查看站点内容。 可以使用 Azure 门户、Azure CLI 或 PowerShell 查找 URL。 请参阅查找网站 URL。
当用户打开站点并且未指定特定文件(例如 https://contosostaticsite.z22.web.core.windows.net
)时,将出现在启用静态网站托管时指定的索引文档。
如果服务器返回 404 错误,并且你在启用网站时未指定错误文档,则会向用户返回默认 404 页面。
注意
静态网站不支持对 Azure 存储的跨域资源共享 (CORS) 支持。
辅助终结点
如果在次要区域中设置冗余,则还可以使用辅助终结点访问网站内容。 数据以异步方式复制到次要区域。 因此,辅助终结点上可用的文件并不总是与主终结点上可用的文件同步。
设置 Web 容器上的访问级别会造成的影响
可以修改 $web 容器的匿名访问级别,但进行此修改不会对主要静态网站终结点产生影响,因为这些文件是通过匿名访问请求提供的。 这意味着对所有文件的访问权限为公共(只读)访问权限。
虽然主静态网站终结点不会受到影响,但对匿名访问级别的更改会影响主 blob 服务终结点。
例如,如果将 $web 容器的匿名访问级别从“专用(无匿名访问)”更改为“Blob (仅匿名读取访问 blob)”,主静态网站终结点 https://contosostaticsite.z22.web.core.windows.net/index.html
的匿名访问级别不会更改。
但是,对主 blob 服务终结点 https://contosostaticsite.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 存储功能支持,以评估对此功能的支持。
常见问题 (FAQ)
Azure 存储防火墙是否适用于静态网站?
是的。 存储帐户网络安全规则(包括基于 IP 的和 VNET 防火墙)支持静态网站终结点,并且可用于保护网站。
静态网站是否支持 Microsoft Entra ID?
编号 静态网站仅支持对 $web 容器中文件的匿名读取访问。
如何将自定义域与静态网站配合使用?
可以使用 Azure 内容分发网络 (Azure CDN) 在静态网站中配置自定义域。 Azure CDN 在世界各地为网站提供了一致的低延迟。
如何将自定义安全套接字层 (SSL) 证书用于静态网站?
可以使用 Azure CDN 在静态网站中配置自定义 SSL 证书。 Azure CDN 在世界各地为网站提供了一致的低延迟。
如何向静态网站添加自定义标头和规则?
可以使用 Azure CDN 规则引擎为静态网站配置主机头。 我们非常期待你能在此处提供反馈。
为什么会从静态网站收到 HTTP 404 错误?
如果使用不正确的大小写来引用文件名,则会发生 404 错误。 例如:Index.html
,而非 index.html
。 静态网站的 URL 中的文件名和扩展名区分大小写,即使通过 HTTP 提供也是如此。 如果尚未预配 Azure CDN 终结点,也会发生这种情况。 预配新的 CDN 后,最长等待 90 分钟,以完成传播。
为什么网站的根目录不重定向到默认索引页?
在 Azure 门户中,打开帐户的静态网站配置页,并查找在“索引文档名称”字段中设置的名称和扩展名。 确保此名称与位于存储帐户的 $web 容器中的文件的名称完全相同。 静态网站的 URL 中的文件名和扩展名区分大小写,即使通过 HTTP 提供也是如此。
为存储帐户中的 blob 启用专用终结点时,为何我无法访问存储帐户中的静态网站?
为存储帐户中的 blob 启用专用终结点时,仅同一虚拟网络中的资源能够访问该存储帐户。 因此,此限制可防止外部访问存储帐户中托管的静态网站,从而使静态网站内容无法访问。 专用终结点配置将对所有存储帐户资源(包括静态网站内容)的访问限制为启用专用终结点的同一虚拟网络中的资源。 解决方法是为 Web 创建专用终结点。 静态网站需要$web域的专用私有端点。