core: Nueva API basada en FFI para lua-nginx-module
Instalación
Si no has configurado la suscripción al repositorio RPM, regístrate. Luego puedes proceder con los siguientes pasos.
CentOS/RHEL 7 o Amazon Linux 2
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-core
CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-core
Para usar esta biblioteca Lua con NGINX, asegúrate de que nginx-module-lua esté instalado.
Este documento describe lua-resty-core v0.1.32.post1 lanzado el 13 de diciembre de 2025.
Esta biblioteca se carga automáticamente por defecto desde OpenResty 1.15.8.1. Este comportamiento se puede desactivar a través de la directiva lua_load_resty_core, pero ten en cuenta que se recomienda encarecidamente el uso de esta biblioteca, ya que su implementación FFI es más rápida, segura y completa que la API C de Lua del módulo ngx_lua.
Si estás utilizando una versión anterior de OpenResty, debes cargar esta biblioteca de la siguiente manera:
# nginx.conf
http {
# NO necesitas configurar la siguiente línea cuando
# estés usando el paquete OpenResty 1.4.3.9+.
init_by_lua_block {
require "resty.core"
collectgarbage("collect") -- solo para recolectar cualquier basura
}
...
}
Descripción
Esta biblioteca Lua pura reimplementa parte de la API de Nginx para Lua del módulo ngx_lua con LuaJIT FFI e instala la nueva API Lua basada en FFI en los espacios de nombres ngx. y ndk. utilizados por el módulo ngx_lua.
Además, esta biblioteca Lua implementa cualquier nueva API Lua significativa del módulo ngx_lua como módulos Lua adecuados, como ngx.semaphore y ngx.balancer.
La API Lua basada en FFI puede trabajar con el compilador JIT de LuaJIT. La API predeterminada de ngx_lua se basa en la API C estándar de Lua, que nunca será compilada JIT y el código Lua del usuario siempre se interpreta (lentamente).
También se ha comenzado a dar soporte para el nuevo ngx_stream_lua_module.
Esta biblioteca se incluye con el paquete OpenResty por defecto. Así que realmente no necesitas preocuparte por las dependencias y requisitos.
Requisitos previos
ADVERTENCIA Esta biblioteca está incluida con cada lanzamiento de OpenResty. Debes usar la versión incluida de esta biblioteca en el lanzamiento específico de OpenResty que estás utilizando. De lo contrario, puedes enfrentar serios problemas de compatibilidad.
- LuaJIT 2.1 (por ahora, es la rama git v2.1 en el repositorio oficial de luajit-2.0: http://luajit.org/download.html)
- ngx_http_lua_module v0.10.25.
- ngx_stream_lua_module v0.0.13.
- lua-resty-lrucache
API Implementada
resty.core.hash
resty.core.base64
resty.core.uri
resty.core.regex
resty.core.exit
resty.core.shdict
- ngx.shared.DICT.get
- ngx.shared.DICT.get_stale
- ngx.shared.DICT.incr
- ngx.shared.DICT.set
- ngx.shared.DICT.safe_set
- ngx.shared.DICT.add
- ngx.shared.DICT.safe_add
- ngx.shared.DICT.replace
- ngx.shared.DICT.delete
- ngx.shared.DICT.ttl
- ngx.shared.DICT.expire
- ngx.shared.DICT.flush_all
- ngx.shared.DICT.free_space
- ngx.shared.DICT.capacity
resty.core.var
resty.core.ctx
get_ctx_table
sintaxis: ctx = resty.core.ctx.get_ctx_table(ctx?)
Similar a ngx.ctx pero acepta un argumento opcional ctx. Usará el ctx del llamador en lugar de crear una nueva tabla cuando la tabla ctx no exista.
Nota: la tabla ctx se utilizará en todo el ciclo de vida de la solicitud actual. Ten mucho cuidado cuando intentes reutilizar la tabla ctx. Necesitas asegurarte de que no haya código Lua utilizando o que vaya a utilizar la tabla ctx en la solicitud actual antes de reutilizar la tabla ctx en otro lugar.
resty.core.request
- ngx.req.get_headers
- ngx.req.get_uri_args
- ngx.req.start_time
- ngx.req.get_method
- ngx.req.set_method
- ngx.req.set_header
- ngx.req.clear_header
resty.core.response
resty.core.misc
resty.core.time
- ngx.time
- ngx.now
- ngx.update_time
- ngx.localtime
- ngx.utctime
- ngx.cookie_time
- ngx.http_time
- ngx.parse_http_time
- monotonic_msec
- monotonic_time
resty.core.worker
resty.core.phase
resty.core.ndk
resty.core.socket
resty.core.param
- ngx.arg (solo getter)
ngx.semaphore
Este módulo Lua implementa una API de semáforo para una sincronización eficiente de "hilos ligeros", que puede funcionar a través de diferentes solicitudes (pero no entre procesos de trabajo de nginx).
Consulta la documentación para este módulo Lua para más detalles.
ngx.balancer
Este módulo Lua implementa la definición de balanceadores de carga ascendentes dinámicos en Lua.
Consulta la documentación para este módulo Lua para más detalles.
ngx.ssl
Este módulo Lua proporciona una API Lua para controlar certificados SSL, claves privadas, versiones de protocolo SSL, etc. en los handshakes SSL descendentes de NGINX.
Consulta la documentación para este módulo Lua para más detalles.
ngx.ssl.clienthello
Este módulo Lua proporciona una API Lua para el post-procesamiento del mensaje hello del cliente SSL para las conexiones SSL descendentes de NGINX.
Consulta la documentación para este módulo Lua para más detalles.
ngx.ssl.session
Este módulo Lua proporciona una API Lua para manipular datos e IDs de sesión SSL para las conexiones SSL descendentes de NGINX.
Consulta la documentación para este módulo Lua para más detalles.
ngx.re
Este módulo Lua proporciona una API Lua que implementa utilidades de conveniencia para la API ngx.re.
Consulta la documentación para este módulo Lua para más detalles.
ngx.resp
Este módulo Lua proporciona una API Lua que se puede utilizar para manejar respuestas HTTP.
Consulta la documentación para este módulo Lua para más detalles.
ngx.pipe
Este módulo proporciona una API Lua para crear procesos y comunicarse con ellos de manera no bloqueante.
Consulta la documentación para este módulo Lua para más detalles.
Este módulo se introdujo por primera vez en lua-resty-core v0.1.16.
ngx.process
Este módulo Lua se utiliza para gestionar el proceso de nginx en Lua.
Consulta la documentación para este módulo Lua para más detalles.
Este módulo se introdujo por primera vez en lua-resty-core v0.1.12.
ngx.errlog
Este módulo Lua proporciona una API Lua para capturar y gestionar mensajes de registro de errores de nginx.
Consulta la documentación para este módulo Lua para más detalles.
Este módulo se introdujo por primera vez en lua-resty-core v0.1.12.
ngx.base64
Este módulo Lua proporciona una API Lua para codificación/decodificación base64 segura para URL.
Consulta la documentación para este módulo Lua para más detalles.
Este módulo se introdujo por primera vez en lua-resty-core v0.1.14.
Advertencia
Si el código Lua del usuario no se compila JIT, entonces el uso de esta biblioteca puede llevar a una caída en el rendimiento en modo interpretado. Solo observarás una aceleración cuando una buena parte de tu código Lua de usuario esté compilada JIT.
Ver También
- el módulo ngx_lua: https://github.com/openresty/lua-nginx-module#readme
- LuaJIT FFI: http://luajit.org/ext_ffi.html
GitHub
Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-core.