Lua 过滤器

在本例中,我们将展示如何将 Lua 过滤器与 Envoy 代理一起使用。

示例 Envoy 代理配置包括两个 Lua 过滤器,它们包含两个不同的函数

  • envoy_on_request(request_handle)

  • envoy_on_response(response_handle)

参见此处 了解 Envoy 的 Lua 过滤器的概述以及有关这些函数的文档。

步骤 1:构建沙箱

更改到 examples/lua 目录。

$ pwd
envoy/examples/lua
$ docker compose pull
$ docker compose up --build -d
$ docker compose ps

    Name                     Command               State             Ports
--------------------------------------------------------------------------------------------
lua_proxy_1         /docker-entrypoint.sh /bin ... Up      10000/tcp, 0.0.0.0:8000->8000/tcp
lua_web_service_1   node ./index.js                Up      0.0.0.0:8080->80/tcp

步骤 2:向服务发送请求

以下 curl 命令的输出应包括 Lua 过滤器添加的标头。

终端 1

$ curl -v localhost:8000 2>&1 | grep Foo
Foo: bar                              <-- This is added by the common Lua filter. --<

步骤 3:同时使用多个 Lua 过滤器

在示例 Envoy 代理配置中配置了两个 Lua 过滤器。但第二个过滤器只能在特定路由上工作。

以下 curl 命令的输出应包括多个 Lua 过滤器添加的标头。

终端 1

curl -v localhost:8000/multiple/lua/scripts 2>&1 | grep header_key_1
< header_key_1: header_value_1        <-- This is added by the second route-specific Lua filter. --<

另请参阅

Envoy Lua 过滤器

了解有关 Envoy Lua 过滤器的更多信息。

Lua

Lua 编程语言。