0Pricing
Lua Academy · Lezione

Architettura di OpenResty

Comprenda come ngx_lua integri LuaJIT nelle fasi di elaborazione delle richieste Nginx.

Architettura di OpenResty è una lezione Lua Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Lua Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Lua Academy include 4 lezioni in totale.

Che cos'è OpenResty?

OpenResty è una piattaforma web che integra LuaJIT in Nginx. Trasforma Nginx in un server per applicazioni web completo, in cui il codice Lua gestisce le richieste.

Modulo ngx_lua

Il modulo ngx_lua integra LuaJIT in Nginx. Fornisce l'API ngx.* per accedere ai dati di richiesta e risposta, ai timer, alla memoria condivisa e ai cosocket.

Fasi delle richieste Nginx

OpenResty espone le fasi di elaborazione delle richieste di Nginx come hook Lua: init_by_lua, access_by_lua, content_by_lua, header_filter_by_lua, log_by_lua.

Nozioni di base su nginx.conf

Configuri i gestori Lua in nginx.conf utilizzando la direttiva appropriata per la fase.

# nginx.conf snippet
server {
  listen 80;
  location /hello {
    content_by_lua_block {
      ngx.header["Content-Type"] = "text/plain"
      ngx.say("Hello from Lua!")
    }
  }
}

Modello coroutine-per-richiesta

Ogni richiesta in arrivo riceve una propria coroutine Lua. Quando una coroutine cede il controllo (ad esempio, mentre attende un database), Nginx serve altre richieste. Questo consente un'elevata concorrenza senza blocchi.

L'API ngx

Funzioni principali di ngx: ngx.say(), ngx.print(), ngx.header, ngx.var, ngx.req.*, ngx.status, ngx.exit().

Stato della memoria condivisa

I processi worker condividono i dati tramite ngx.shared.DICT — un dizionario condiviso dichiarato in nginx.conf con una dimensione di memoria fissa.

# nginx.conf
lua_shared_dict my_cache 10m;
-- In Lua:
ngx.shared.my_cache:set("key", "value", 60)

Cosocket

I cosocket di OpenResty forniscono TCP/UDP e HTTP non bloccanti. Si integrano con l'event loop di Nginx, consentendo a Lua di eseguire I/O asincrono senza bloccare il worker.

API dei timer

ngx.timer.at(delay, fn) programma una funzione Lua per l'esecuzione dopo un ritardo. ngx.timer.every(interval, fn) la esegue periodicamente.

Profilo delle prestazioni

OpenResty gestisce decine di migliaia di connessioni simultanee per worker. In combinazione con la velocità di LuaJIT e il collaudato multiplexing I/O di Nginx, compete con Go e Node.js per i carichi di lavoro vincolati dall'I/O.

Casi d'uso comuni

  • API gateway e rate limiting.
  • Middleware di autenticazione/autorizzazione.
  • Routing dinamico delle richieste.
  • Livelli di caching per Redis e Memcached.

Domanda su OpenResty

In che modo OpenResty raggiunge un'elevata concorrenza?

Riepilogo: architettura di OpenResty

OpenResty integra LuaJIT in Nginx. Ogni richiesta viene eseguita come coroutine. L'API ngx.* fornisce accesso ai dati di richiesta e risposta, alla memoria condivisa, ai timer e ai cosocket non bloccanti.

Domande Frequenti

La lezione «Architettura di OpenResty» è gratuita?

Sì — il testo completo di «Architettura di OpenResty» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Lua Academy, passa a CoddyKit PRO. Il corso Lua Academy include 4 lezioni in totale.

Cosa imparerò in «Architettura di OpenResty»?

Comprenda come ngx_lua integri LuaJIT nelle fasi di elaborazione delle richieste Nginx. Eserciti Lua Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Lua Academy?

Non è richiesta alcuna esperienza precedente. Lua Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Architettura di OpenResty»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Lua Academy?

Sì. Ogni lezione Lua Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Architettura di OpenResty
  2. Gestione delle richieste HTTP in Lua
  3. Cosocket e TCP non bloccante
  4. Dizionari in memoria condivisa
← Torna a Lua Academy