Azure Blob 存储非常适合存储大量非结构化数据,例如文本、图像和视频。 由于 Blob 存储还提供静态网站托管支持,因此在不需要 Web 服务器呈现内容的情况下,这是一个很好的选择。 尽管只能托管 HTML、CSS、JavaScript 和图像文件等静态内容,但可以使用无服务器体系结构,包括 Azure Functions 和其他平台即服务 (PaaS) 服务。
如果需要 Web 服务器来呈现内容,可以使用 Azure 应用服务。
设置静态网站
静态网站托管功能在存储帐户中配置,默认情况下未启用。 若要启用静态网站托管,请选择一个存储帐户。 在左侧导航窗格中,请从“数据管理”组中选择“静态网站”,然后选择“启用”。 为“索引文档名称”提供名称。 可以选择提供自定义 404 页面的路径。 最后,选择“保存”以保存配置更改。
如果存储帐户中尚不存在名为 $web 的 Blob 存储容器,则会为你创建该容器。 请将网站的文件添加到 $web 容器,以便通过静态网站的主终结点访问这些文件。
$web 容器中的文件区分大小写,可以通过匿名访问请求获取,并且只能通过读取操作获取。
有关分步指南,请参阅在 Azure 存储中托管静态网站。
上传内容
可以使用下列工具中的任何一种将内容上传到 $web 容器:
查看内容
用户可以在浏览器中使用网站的公共 URL 来查看站点内容。 可以使用 Azure 门户、Azure CLI 或 PowerShell 查找 URL。 请参阅查找网站 URL。
启用静态网站托管后,当用户打开站点且未指定具体文件时,您指定的索引文档将显示出来(例如 https://contosostaticsite.z22.web.core.chinacloudapi.cn
)。
如果服务器返回 404 错误,并且你在启用网站时未指定错误文档,则会向用户返回默认 404 页面。
注意
静态网站不支持对 Azure 存储的跨域资源共享 (CORS) 支持。
辅助终结点
如果您在次要区域设置冗余,也可以通过备用终端点访问网站内容。 数据将以异步方式复制到次要区域。 因此,辅助终结点上可用的文件并不总是与主终结点上可用的文件同步。
设置 Web 容器的访问级别会造成的影响
可以修改 $web 容器的匿名访问级别,但进行此修改不会影响主要静态网站终结点,因为这些文件是通过匿名访问请求提供的。 这意味着对所有文件的公共(只读)访问权限。
尽管主静态网站终结点不受影响,但更改匿名访问级别会影响主 blob 服务终结点。
例如,如果将 $web 容器的匿名访问级别从“专用(不允许匿名访问)”更改为“Blob (仅允许匿名读取 blob)”,则对主静态网站终结点 https://contosostaticsite.z4.web.core.chinacloudapi.cn/index.html
的匿名访问级别不会更改。
但是,对主 blob 服务终结点 https://contosostaticsite.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 终结点尚未预配,也可能会发生这种情况。 在预配新的 Azure CDN 后,传播完成可能需要最长 90 分钟,请耐心等待。
为什么网站的根目录不重定向到默认索引页?
在 Azure 门户中,打开帐户的静态网站配置页,并查找在“索引文档名称”字段中设置的名称和扩展名。 确保此名称与位于存储帐户的 $web 容器中的文件的名称完全相同。 静态网站的 URL 中的文件名和扩展名区分大小写,即使通过 HTTP 提供也是如此。