Lua filter
In this example, we show how the Lua filter can be used with the Envoy proxy.
The example Envoy proxy configuration includes two Lua filters that contain two different functions:
envoy_on_request(request_handle)
envoy_on_response(response_handle)
See here for an overview of Envoy’s Lua filter and documentation regarding these functions.
Step 1: Build the sandbox
Change to the examples/lua
directory.
$ 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
Step 2: Send a request to the service
The output from the curl
command below should include the header added by the Lua filter.
Terminal 1
$ curl -v localhost:8000 2>&1 | grep Foo
Foo: bar <-- This is added by the common Lua filter. --<
Step 3: Using multiple Lua filters at the same time
Two Lua filters are configured in the example Envoy proxy configuration. But the second one can only work at a specific route.
The output from the curl
command below should include the headers that added by multiple Lua filters.
Terminal 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. --<
See also
- Envoy Lua filter
Learn more about the Envoy Lua filter.
- Lua
The Lua programming language.