Arquitetura do OpenResty
Compreenda como ngx_lua incorpora LuaJIT às fases de requisição do Nginx.
Arquitetura do OpenResty é uma aula grátis de Lua Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Lua Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Lua Academy inclui 4 aulas no total.
O que é OpenResty?
OpenResty é uma plataforma web que incorpora LuaJIT ao Nginx. Ela transforma o Nginx em um servidor de aplicativos web completo, no qual o código Lua processa as requisições.
Módulo ngx_lua
O módulo ngx_lua integra LuaJIT ao Nginx. Ele fornece a API ngx.* para acessar dados de requisições/respostas, temporizadores, memória compartilhada e cosockets.
Fases de processamento de requisições do Nginx
O OpenResty expõe as fases de processamento de requisições do Nginx como ganchos Lua: init_by_lua, access_by_lua, content_by_lua, header_filter_by_lua, log_by_lua.
Noções básicas de nginx.conf
Configure os manipuladores Lua em nginx.conf usando a diretiva de fase apropriada.
# nginx.conf snippet
server {
listen 80;
location /hello {
content_by_lua_block {
ngx.header["Content-Type"] = "text/plain"
ngx.say("Hello from Lua!")
}
}
}Modelo de uma corrotina por requisição
Cada requisição recebida recebe sua própria corrotina Lua. Quando uma corrotina cede a execução (por exemplo, enquanto aguarda um banco de dados), o Nginx atende a outras requisições. Isso permite alta simultaneidade sem bloqueio.
A API ngx
Principais funções de ngx: ngx.say(), ngx.print(), ngx.header, ngx.var, ngx.req.*, ngx.status, ngx.exit().
Estado da memória compartilhada
Os processos de trabalho compartilham dados por meio de ngx.shared.DICT — um dicionário compartilhado declarado em nginx.conf com um tamanho fixo de memória.
# nginx.conf
lua_shared_dict my_cache 10m;
-- In Lua:
ngx.shared.my_cache:set("key", "value", 60)Cosockets
Os cosockets do OpenResty fornecem suporte não bloqueante a TCP/UDP e HTTP. Eles se integram ao loop de eventos do Nginx, permitindo que Lua realize E/S assíncrona sem bloquear o processo de trabalho.
API de temporizadores
ngx.timer.at(delay, fn) agenda uma função Lua para ser executada após um atraso. ngx.timer.every(interval, fn) a executa periodicamente.
Perfil de desempenho
O OpenResty gerencia dezenas de milhares de conexões simultâneas por processo de trabalho. Combinado com a velocidade do LuaJIT e a multiplexação de E/S comprovada do Nginx, ele compete com Go e Node.js em cargas de trabalho limitadas por E/S.
Casos de uso comuns
- Gateways de API e limitação de taxa.
- Middleware de autenticação e autorização.
- Roteamento dinâmico de solicitações.
- Camadas de cache com Redis e Memcached.
Pergunta sobre OpenResty
Como o OpenResty alcança alta simultaneidade?
Recapitulação: arquitetura do OpenResty
O OpenResty incorpora LuaJIT ao Nginx. Cada solicitação é executada como uma corrotina. A API ngx.* fornece acesso a dados de solicitação e resposta, memória compartilhada, temporizadores e cosockets não bloqueantes.
Perguntas Frequentes
A aula “Arquitetura do OpenResty” é grátis?
Sim — o texto completo de “Arquitetura do OpenResty” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Lua Academy, atualize para CoddyKit PRO. O curso de Lua Academy inclui 4 aulas no total.
O que vou aprender em “Arquitetura do OpenResty”?
Compreenda como ngx_lua incorpora LuaJIT às fases de requisição do Nginx. Você pratica Lua Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Lua Academy?
Nenhuma experiência prévia é necessária. Lua Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Arquitetura do OpenResty”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Lua Academy?
Sim. Cada aula de Lua Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Arquitetura do OpenResty
- Tratamento de requisições HTTP em Lua
- Cosockets e TCP sem bloqueio
- Dicionários de memória compartilhada