Saltar a contenido

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.

API Implementada

resty.core.hash

resty.core.base64

resty.core.uri

resty.core.regex

resty.core.exit

resty.core.shdict

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

resty.core.response

resty.core.misc

resty.core.time

resty.core.worker

resty.core.phase

resty.core.ndk

resty.core.socket

resty.core.param

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

GitHub

Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-core.