<!-- review: finished -->

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

# Lua

El paquete Lua integra el lenguaje de programación Lua en el modelo de procesamiento
basado en eventos de Angie, permitiendo que la funcionalidad del servidor sea extendida
con scripts Lua. Consiste en dos 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>

## Instalación

Para [instalar](https://es.angie.software//angie/docs/installation/index.md#install-packages) el módulo, usa uno de los siguientes paquetes:

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

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

## Características

Ejemplos de casos de uso:

- agregación y procesamiento de salida de varios servidores `upstream`
  (proxy, drizzle, postgres, redis, memcached, etc.);
- implementación de lógica de control de acceso y seguridad antes de pasar
  la petición al backend;
- modificación de cabeceras de respuesta;
- obtención de datos del servidor upstream desde fuentes externas y selección
  dinámica del `upstream`;
- construcción de aplicaciones web completas dentro del `content handler`;
- realización de enrutamiento de URL durante la fase de reescritura;
- implementación de almacenamiento en caché avanzado para subpeticiones y bloques `location`.

El entorno LuaJIT ofrece rendimiento comparable a C, con alta velocidad de ejecución
y bajo uso de memoria. Esto hace que la integración de Lua sea especialmente eficiente en Angie.

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

## Carga del Módulo

Usar el módulo Lua requiere cargar el módulo `ndk` previamente.
Los módulos se cargan en el contexto `main{}` de la siguiente manera:

```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 Incluidas

Las siguientes bibliotecas de terceros se instalan junto con los 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>

## Información Adicional

Documentación completa y código fuente están disponibles en:

- [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)
