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.
- LuaJIT 2.1 (por enquanto, é o branch git v2.1 no repositório oficial 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
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
- 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 (somente getter)
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
- o módulo ngx_lua: https://github.com/openresty/lua-nginx-module#readme
- LuaJIT FFI: http://luajit.org/ext_ffi.html
GitHub
Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório GitHub para nginx-module-core.