在本教程中,我们将演示如何在 OpenResty Edge 的 Web 控制台中配置自定义错误页。

自定义模板创建

今天,我将演示如何在 OpenResty Edge 中使用自定义模板创建错误页面。让我们先进入控制台。这是我们控制台的示例部署。每个用户都会有自己的部署。

Screenshot

首先,我们点击 “Global Config”。

Screenshot

然后,我们进入 “Global Page Templates” 页面。在这里,我们可以创建一些全局页面模板,这些模板可以自定义错误页面或 WAF 阻止页面。

Screenshot

现在,我们可以点击这个按钮来添加一个简单的模板。

Screenshot

在这里将模板命名为 error-page-template-demo

Screenshot

对于 HTML 的内容,您可以使用一些预定义的变量来自定义它:

Screenshot

比如 “CLIENT_IP”,

Screenshot

“CLIENT_COUNTRY”,

Screenshot

以及 “HOST”。

Screenshot

现在我们可以输出客户端 IP 地址。

Screenshot

也可以输出请求 ID 和 user agent 作为示例。

Screenshot

然后我们点击保存。

Screenshot

由于这是全局配置,对该页面模板的更改将立即发布并同步到所有网关服务器。

Screenshot

模板的应用

接下来,转到我们的示例应用:

Screenshot

然后搜索 test-edge.com,将页面模板应用为自定义的错误页面。

Screenshot

进入应用。

Screenshot

然后进入 “Page Rules” 页面。

Screenshot

点击 “New Rules"。

Screenshot

我们添加一个新的动作。

Screenshot

您可以在这里选择或搜索动作类型。

Screenshot

搜索 “customize error page”。

Screenshot

在这里,你可以选择错误页对应的 HTTP 响应状态码。

Screenshot

这里我们只选择 “404”。

Screenshot

有几种设置定制错误页面的方法,比如使用原始 HTML、 Backend URL,或者之前已经上传的全局静态文件。

Screenshot

现在,选择使用我们刚刚定义并命名为 “error-page-template-demo” 的全局页面模板。

Screenshot

接下来,我们需要再添加一个动作。

Screenshot

点击搜索框。

Screenshot

搜索 “intercept upstream errors”。

Screenshot

由于我们已经配置了代理到上游,启用此操作可以拦截上游错误。

Screenshot

此外,我们需要将这个规则放在其他规则之前,这样我们就可以返回我们自定义的错误页面。

Screenshot

保存即可。

Screenshot

通常,我们需要发布一个新版本来推送 “new page rule”。

Screenshot

点击这里发布待处理的变更。

Screenshot

点击发布!

Screenshot

现在已经完全同步了。

Screenshot

新的页面规则已经被推送到所有网关集群和服务器。

Embeded video

我们的配置更改无需重新加载、重启或二进制升级服务器,因此非常高效且易于扩展。

Embeded image

页面规则的验证

让我们通过测试一个网关服务器以验证这个规则。

Screenshot

复制这台旧金山网关服务器的 IP 地址。

Screenshot

然后在终端上进行测试。

Screenshot

这是我们前面看到的旧金山网关服务器的 IP 地址。

Screenshot

这是一个不存在的随机生成的 URL,所以可以看出这确实是一个 404 响应。

Screenshot

继续运行指令。

Screenshot

我们可以将请求信息以 HTML 格式输出,这对排查错误页面的原因会很有帮助。

Screenshot

如果您想输出更多信息或更改错误页面的样式,您只需编辑页面模板即可。变更将立即发布并生效。

Screenshot

错误页的全局重写规则

如果您希望为所有应用使用相同的错误页面,还可以配置一个全局重写规则。

Screenshot

前往 “Global Rewrite Rules” 页面。

Screenshot

通过点击这里添加一个新规则,它与应用程序中的 “Page Rules” 几乎完全相同。 我们会通过另一个教程来介绍这一功能。

Screenshot

关于 OpenResty Edge

OpenResty Edge 是一款专为微服务和分布式流量架构设计的全能型网关软件,由我们自主研发。它集流量管理、私有 CDN 构建、API 网关、安全防护等功能于一体,帮助您轻松构建、管理和保护现代应用程序。OpenResty Edge 拥有业界领先的性能和可扩展性,能够满足高并发、高负载场景下的苛刻需求。它支持调度 K8s 等容器应用流量,并可管理海量域名,轻松满足大型网站和复杂应用的需求。

如果你喜欢这个教程,请订阅这个博客网站和我们的 B 站频道。谢谢!

关于作者

章亦春是开源 OpenResty® 项目创始人兼 OpenResty Inc. 公司 CEO 和创始人。

章亦春(Github ID: agentzh),生于中国江苏,现定居美国湾区。他是中国早期开源技术和文化的倡导者和领军人物,曾供职于多家国际知名的高科技企业,如 Cloudflare、雅虎、阿里巴巴, 是 “边缘计算“、”动态追踪 “和 “机器编程 “的先驱,拥有超过 22 年的编程及 16 年的开源经验。作为拥有超过 4000 万全球域名用户的开源项目的领导者。他基于其 OpenResty® 开源项目打造的高科技企业 OpenResty Inc. 位于美国硅谷中心。其主打的两个产品 OpenResty XRay(利用动态追踪技术的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最适合微服务和分布式流量的全能型网关软件),广受全球众多上市及大型企业青睐。在 OpenResty 以外,章亦春为多个开源项目贡献了累计超过百万行代码,其中包括,Linux 内核、Nginx、LuaJITGDBSystemTapLLVM、Perl 等,并编写过 60 多个开源软件库。

关注我们

如果您喜欢本文,欢迎关注我们 OpenResty Inc. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:

我们的微信公众号

翻译

我们提供了英文版原文和中译版(本文)。我们也欢迎读者提供其他语言的翻译版本,只要是全文翻译不带省略,我们都将会考虑采用,非常感谢!