Pular para conteúdo

core: Nova API baseada em FFI para lua-nginx-module

Instalação

Se você ainda não configurou a assinatura do repositório RPM, inscreva-se. Em seguida, você pode prosseguir com os seguintes passos.

CentOS/RHEL 7 ou 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 com NGINX, certifique-se de que o nginx-module-lua está instalado.

Este documento descreve lua-resty-core v0.1.32.post1 lançado em 13 de dezembro de 2025.


Esta biblioteca é carregada automaticamente por padrão desde o OpenResty 1.15.8.1. Este comportamento pode ser desativado através da diretiva lua_load_resty_core, mas note que o uso desta biblioteca é fortemente recomendado, pois sua implementação FFI é mais rápida, segura e completa do que a API C Lua do módulo ngx_lua.

Se você estiver usando uma versão mais antiga do OpenResty, você deve carregar esta biblioteca assim:

    # nginx.conf

    http {
        # você NÃO precisa configurar a linha a seguir quando estiver
        # usando o pacote OpenResty 1.4.3.9+.
        init_by_lua_block {
            require "resty.core"
            collectgarbage("collect")  -- apenas para coletar qualquer lixo
        }

        ...
    }

Descrição

Esta biblioteca Lua pura reimplementa parte da ngx_lua do módulo API Nginx para Lua com LuaJIT FFI e instala a nova API Lua baseada em FFI nos namespaces ngx. e ndk. usados pelo módulo ngx_lua.

Além disso, esta biblioteca Lua implementa quaisquer novas APIs Lua significativas do módulo ngx_lua como módulos Lua adequados, como ngx.semaphore e ngx.balancer.

A API Lua baseada em FFI pode funcionar com o compilador JIT do LuaJIT. A API padrão do ngx_lua é baseada na API C Lua padrão, que nunca será compilada em JIT e o código Lua do usuário é sempre interpretado (lentamente).

O suporte para o novo ngx_stream_lua_module também começou.

Esta biblioteca é fornecida com o pacote OpenResty por padrão. Portanto, você realmente não precisa se preocupar com as dependências e requisitos.

Pré-requisitos

AVISO Esta biblioteca está incluída em todas as versões do OpenResty. Você deve usar a versão embutida desta biblioteca na versão específica do OpenResty que está utilizando. Caso contrário, você pode enfrentar sérios problemas de compatibilidade.

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

sintaxe: ctx = resty.core.ctx.get_ctx_table(ctx?)

Semelhante ao ngx.ctx, mas aceita um argumento opcional ctx. Ele usará o ctx do chamador em vez de criar uma nova tabela quando a tabela ctx não existir.

Nota: a tabela ctx será usada em todo o ciclo de vida da requisição atual. Por favor, tenha muito cuidado ao tentar reutilizar a tabela ctx. Você precisa ter certeza de que não há código Lua usando ou que irá usar a tabela ctx na requisição atual antes de reutilizar a tabela ctx em outro 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 uma API de semáforo para sincronização eficiente de "threads leves", que pode funcionar entre diferentes requisições (mas não entre processos de trabalho do nginx).

Veja a documentação para este módulo Lua para mais detalhes.

ngx.balancer

Este módulo Lua implementa a definição de balanceadores de upstream dinâmicos em Lua.

Veja a documentação para este módulo Lua para mais detalhes.

ngx.ssl

Este módulo Lua fornece uma API Lua para controlar certificados SSL, chaves privadas, versões de protocolo SSL, etc., em handshakes SSL downstream do NGINX.

Veja a documentação para este módulo Lua para mais detalhes.

ngx.ssl.clienthello

Este módulo Lua fornece uma API Lua para o pós-processamento da mensagem hello do cliente SSL para conexões SSL downstream do NGINX.

Veja a documentação para este módulo Lua para mais detalhes.

ngx.ssl.session

Este módulo Lua fornece uma API Lua para manipular dados e IDs de sessão SSL para conexões SSL downstream do NGINX.

Veja a documentação para este módulo Lua para mais detalhes.

ngx.re

Este módulo Lua fornece uma API Lua que implementa utilitários de conveniência para a API ngx.re.

Veja a documentação para este módulo Lua para mais detalhes.

ngx.resp

Este módulo Lua fornece uma API Lua que pode ser usada para lidar com respostas HTTP.

Veja a documentação para este módulo Lua para mais detalhes.

ngx.pipe

Este módulo fornece uma API Lua para criar processos e se comunicar com eles de forma não bloqueante.

Veja a documentação para este módulo Lua para mais detalhes.

Este módulo foi introduzido pela primeira vez na versão lua-resty-core v0.1.16.

ngx.process

Este módulo Lua é usado para gerenciar o processo do nginx em Lua.

Veja a documentação para este módulo Lua para mais detalhes.

Este módulo foi introduzido pela primeira vez na versão lua-resty-core v0.1.12.

ngx.errlog

Este módulo Lua fornece uma API Lua para capturar e gerenciar mensagens de log de erro do nginx.

Veja a documentação para este módulo Lua para mais detalhes.

Este módulo foi introduzido pela primeira vez na versão lua-resty-core v0.1.12.

ngx.base64

Este módulo Lua fornece uma API Lua para codificação/decodificação base64 segura para URL.

Veja a documentação para este módulo Lua para mais detalhes.

Este módulo foi introduzido pela primeira vez na versão lua-resty-core v0.1.14.

Advertência

Se o código Lua do usuário não for compilado em JIT, o uso desta biblioteca pode levar a uma queda de desempenho no modo interpretado. Você só observará um aumento de velocidade quando uma boa parte do seu código Lua do usuário for compilada em JIT.

Veja Também

GitHub

Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório GitHub para nginx-module-core.