0Pricing
Lua Academy · Aula

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

  1. Arquitetura do OpenResty
  2. Tratamento de requisições HTTP em Lua
  3. Cosockets e TCP sem bloqueio
  4. Dicionários de memória compartilhada
← Voltar para Lua Academy