自定义错误响应概览

借助全球外部应用负载均衡器,您可以在生成 HTTP 错误状态代码(4xx5xx)时自定义自己的错误响应。您可以为负载均衡器和后端实例生成的错误自定义错误响应。您还可以为 Google Cloud Armor 拒绝流量时生成的错误响应代码自定义错误响应。

下面是一个自定义错误页面示例,您可以使用自己的公司品牌信息和徽标、相关页面的链接以及自定义消息为面向外部的使用方应用配置错误响应。

自定义 HTTP 错误响应页面。
自定义 HTTP 错误响应页面

使用自定义错误响应政策,您可以为不同的 HTTP 错误状态代码、网址网域、网址路径以及 HTTP 请求标头和参数字段配置不同的错误响应。

返回自定义错误响应具有以下优势,从而帮助您改善用户的体验:

  • 提供一致的品牌体验
  • 提供背景和相关信息,以增强易用性和用户体验
  • 减轻停机时间和客户端错误的负面影响
  • 提高网络安全性

如果您未配置自定义错误响应政策,则系统会传送通用的不含品牌词的错误对象,如图 2 所示。

通用 HTTP 错误响应页面。
通用 HTTP 错误响应页面

使用场景

自定义错误响应功能适用于许多应用场景。本部分提供了几个概要示例。

定义您自己的维护页面

当您的后端运行状况不佳或处于维护模式时,您可以返回包含公司品牌塑造和信息的错误页面。您可以构建上下文错误页面,其中包含联络中心电话号码或用户应何时重新尝试访问网站等有用信息。您可以选择根据匹配错误条件(例如主机名和 HTTP 错误代码)来自定义错误页面。

定义您自己的默认错误页面

您可以按特定错误代码设置自定义错误响应。例如,您可以为 401 (Unauthorized) HTTP 响应代码设置一个带有“登录或注册”消息的错误页面。您还可以设置默认错误页面,其中包含所有其他 4xx 系列和 5xx 系列 HTTP 错误代码的公司品牌信息和其他相关信息。

为安全规则定义错误响应

您可以返回自定义错误页面,以获取 Google Cloud Armor 安全政策拒绝流量时生成的错误响应代码。您需要确保使用您在 Google Cloud Armor 安全规则中输入的同一 4xx 系列或 5xx 系列 HTTP 错误代码配置错误页面。

减轻停机时间的影响

在适用情况下,您可以将错误响应配置为返回 200 (OK) HTTP 状态代码并提供静态网页,以便用户在停机时间内看到更多上下文相关实用信息,而不是错误页面。

根据客户端请求类型自定义错误响应

您可以根据 HTTP 请求标头和参数(例如 Content-Type 标头)自定义错误响应。将原始请求路由到错误服务时,路由可以考虑 Content-Type 标头来传送网页(对于来自浏览器的请求)或 JSON(对于来自 Web API 的请求)。

自定义错误响应政策的工作原理

您可以在网址映射资源的三个级层(负载均衡器级层、网址网域级层和网址路径级层)定义自定义错误响应政策。

  • 负载均衡器级层。该政策应用于负载均衡器收到的所有流量。

  • 网址网域级层。政策应用于定向到特定域名或主机名(例如 www.example.com)的流量。

  • 网址路径级层。政策应用于定向到特定路径(例如 www.example.com/images/*)的流量。在此级层,您还可以将高级匹配条件与 HTTP 请求标头和参数搭配使用,例如 Content-Type:application/json

下表显示了在网址映射的负载均衡器级层、网址网域级层和网址路径级层应用的自定义错误响应政策。

政策级别 API 字段
负载均衡器 urlMaps.defaultCustomErrorResponsePolicy
网址网域 pathMatchers[].defaultCustomErrorResponsePolicy
网址路径

pathMatchers[].pathRules[].customErrorResponsePolicy

pathMatchers[].routeRules[].customErrorResponsePolicy

如果您在网址映射资源的多个级层配置自定义错误响应政策,系统会返回自定义错误报告在网址映射的最低级层指定的错误对象。在网址映射的较低级层定义的错误响应政策更具体,并且优先于在网址映射的较高级层定义的错误响应政策。

例如,只有在政策与错误条件匹配且没有在较低级层(即网址网域或网址路径)为错误代码定义任何匹配政策时,系统才会在负载均衡器级层应用自定义错误响应政策。同样,只有在政策与错误条件匹配且没有在较低级层(即网址路径)为错误代码定义任何匹配政策时,系统才会在网址网域级层应用自定义错误响应政策。如需详细了解此配置,请参阅为不同网域、路径和错误响应代码配置精细的自定义错误响应政策

指定多条错误响应规则以匹配 HTTP 错误响应代码

在自定义错误响应政策中的任何级层,您都可以指定多条错误响应规则。这些规则可以将 HTTP 错误响应与特定错误代码或一系列错误代码进行匹配。如果您指定了一系列错误代码的规则以及针对特定错误代码的规则,则具有特定错误代码的规则优先。

例如,假设您为 401 (Unauthorized) 错误代码配置了一条规则,而为所有 4xx 系列错误代码配置了另一条规则。如果后端服务返回 401 错误代码,则系统会应用与 401 错误匹配的规则。但是,如果后端服务返回 403 错误代码,则 4xx 错误的规则会生效。

替换 HTTP 响应代码

通过错误响应规则,您可以修改负载均衡器返回的 HTTP 响应代码。这实质上意味着您可以替换服务器生成的响应代码,并定义请求的最终响应代码应该是什么。您可以指定返回任何 HTTP 响应代码,包括 200 (OK)4xx 系列或 5xx 系列响应代码,或任何其他三位数响应代码。如需详细了解如何替换响应代码,请参阅为特定主机的特定错误代码配置错误页面

限制

  • 只有全球外部应用负载均衡器支持此功能。不支持区域模式和传统模式。

  • 如果无法从错误服务中提取自定义错误对象(例如,内容路径配置错误),则系统会传送一个通用的不含品牌词的错误对象。

  • 自定义错误响应政策不会监控或过滤错误服务返回的对象是否存在安全风险。因此,您应该谨慎消除漏洞并限制潜在暴露的影响。

  • 为防止在使用 Cloud Storage 存储桶时发生错误配置,请查看常见的 Cloud Storage 最佳做法

价格

使用自定义错误响应无需额外费用。Google Cloud Load Balancing 采用标准价格。如需了解详情,请参阅价格

后续步骤