<!-- review: finished -->

<a id="external-lua"></a>

# Lua

O pacote Lua integra a linguagem de programação Lua no modelo de processamento
orientado a eventos do Angie, permitindo que a funcionalidade do servidor seja
estendida com scripts Lua. Ele consiste em dois módulos:

- `lua-nginx-module` — [https://github.com/openresty/lua-nginx-module](https://github.com/openresty/lua-nginx-module)
- `stream-lua-nginx-module` —
  [https://github.com/openresty/stream-lua-nginx-module](https://github.com/openresty/stream-lua-nginx-module)

<a id="installation-16"></a>

## Instalação

Para [instalar](https://pt.angie.software//angie/docs/installation/index.md#install-packages) o módulo, use um dos seguintes pacotes:

- Angie: `angie-module-lua`;
- Angie PRO: `angie-pro-module-lua`.

<a id="features"></a>

## Recursos

Exemplos de casos de uso:

- agregação e processamento de saída de vários servidores `upstream`
  (proxy, drizzle, postgres, redis, memcached, etc.);
- implementação de lógica de controle de acesso e segurança antes de passar
  a requisição para o backend;
- modificação de cabeçalhos de resposta;
- recuperação de dados do servidor upstream de fontes externas e seleção
  dinâmica do `upstream`;
- construção de aplicações web completas dentro do `content handler`;
- execução de roteamento de URL durante a fase de rewrite;
- implementação de cache avançado para sub-requisições e blocos `location`.

O ambiente LuaJIT oferece performance comparável ao C, com alta velocidade de
execução e baixo uso de memória. Isso torna a integração Lua especialmente
eficiente no Angie.

<a id="loading-the-module-16"></a>

## Carregando o Módulo

Usar o módulo Lua requer carregar o módulo `ndk` antes.
Os módulos são carregados no contexto `main{}` da seguinte forma:

```nginx
load_module modules/ndk_http_module.so;
load_module modules/ngx_http_lua_module.so;    # para HTTP
load_module modules/ngx_stream_lua_module.so;  # para Stream
```

<a id="bundled-lua-libraries"></a>

## Bibliotecas Lua Incluídas

As seguintes bibliotecas de terceiros são instaladas junto com os módulos Lua:

1. [luajit2](https://github.com/openresty/luajit2)
2. [lua_chronos](https://github.com/ldrumm/chronos)
3. [lua_cjson](https://github.com/mpx/lua-cjson)
4. [lua-dumper](https://github.com/edubart/lua-dumper)
5. [lua-ffi-zlib](https://github.com/hamishforbes/lua-ffi-zlib)
6. [inspect.lua](https://github.com/kikito/inspect.lua)
7. [lua-resty-core](https://github.com/openresty/lua-resty-core)
8. [lua-resty-hmac](https://github.com/jkeys089/lua-resty-hmac)
9. [lua-resty-http](https://github.com/ledgetech/lua-resty-http)
10. [lua-resty-jwt](https://github.com/cdbattags/lua-resty-jwt)
11. [lua-resty-lrucache](https://github.com/openresty/lua-resty-lrucache)
12. [lua-resty-openidc](https://github.com/zmartzone/lua-resty-openidc)
13. [lua-resty-openssl](https://github.com/fffonion/lua-resty-openssl)
14. [lua-resty-session](https://github.com/bungle/lua-resty-session)
15. [lua-resty-string](https://github.com/openresty/lua-resty-string)

<a id="additional-information-17"></a>

## Informações Adicionais

Documentação abrangente e código-fonte estão disponíveis em:

- [https://github.com/openresty/lua-nginx-module](https://github.com/openresty/lua-nginx-module)
- [https://github.com/openresty/stream-lua-nginx-module](https://github.com/openresty/stream-lua-nginx-module)
