除了填写表单创建规则,我们还有个性化的 Edge 语言规则,用于更加复杂的规则表达。 Edge 语言是一种针对网关领域的小语言,由我们自主设计。 它可以精确而高效地描述各种不同类型的网关逻辑。

比如这里我们有一些复杂的重定向规则。每条规则都有一个箭头符号(=>),用于分隔条件和动作。 正如我们可以看到的,条件是可以嵌套的。 也可以使用正则表达式,使用 rx{}。 我们提供 Edge 语言用户手册供参考。

我们也有这些 Edge 规则运行于这些基于表单的规则之后。

举例来说,就像这样,我们添加 uri("/hello") 并生成一个响应体 hello world

这样,这条规则将会在请求URI 精确等于 /hello 的时候触发。 这不是前缀,而是精确匹配。 正如我前面提到的,配置变更需要独立的发布操作才能推上线。

现在让我们去到发布页面来查看我刚刚做的那个尚未发布的变更。

这里可以看到未发布的变更,也可以看到之前做的所有发布的历史记录,包含每次发布的时间和发布内部最后一次变更的作者信息。 可以清除这次变更,也可以还原(当前的网关配置)到其中任何一个历史发布上去,把那次发布以来引入的所有变更都回滚掉。 现在让我们发布刚刚的变更,然后实际检测线上的网关集群。

这里可以观察配置的同步进度,一般只需要花费几秒钟的时间就推送给所有的(网关)节点了。

然后让我们直接测试一下网关。

先选一个节点的 IP 地址,然后打开命令行使用 curl 测试。

$ curl --resolve 'openresty.org:80:182.92.4.22' http://openresty.org/hello
hello world

我们可以看到这个边缘节点已经应用了这一条新规则了。

我们也可以直接在浏览器里测试它。输入 openresty.org/hello

会得到 "hello world" 响应。