Lua Academy · Les

OpenResty-architectuur

Begrijp hoe ngx_lua LuaJIT in de requestfasen van Nginx integreert

Les 1 van 413 stappen

OpenResty-architectuur is een gratis Lua Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Lua Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Lua Academy bevat in totaal 4 lessen.

Wat is OpenResty?

OpenResty is een webplatform waarin LuaJIT in Nginx is ingebed. Het maakt van Nginx een volledig uitgeruste webapplicatieserver waarin Lua-code verzoeken afhandelt.

ngx_lua-module

De module ngx_lua integreert LuaJIT in Nginx. Deze biedt de ngx.*-API voor toegang tot verzoek- en antwoordgegevens, timers, gedeeld geheugen en cosockets.

Verwerkingsfasen van Nginx-verzoeken

OpenResty stelt de verwerkingsfasen van Nginx-verzoeken beschikbaar als Lua-hooks: init_by_lua, access_by_lua, content_by_lua, header_filter_by_lua, log_by_lua.

Basisbeginselen van nginx.conf

Configureer Lua-afhandelingsfuncties in nginx.conf met de juiste faserichtlijn.

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

Model met één coroutine per verzoek

Elk binnenkomend verzoek krijgt een eigen Lua-coroutine. Wanneer een coroutine de uitvoering overdraagt (bijvoorbeeld tijdens het wachten op een database), verwerkt Nginx andere verzoeken. Zo is hoge gelijktijdigheid mogelijk zonder blokkeren.

De ngx-API

Belangrijke ngx-functies: ngx.say(), ngx.print(), ngx.header, ngx.var, ngx.req.*, ngx.status, ngx.exit().

Toestand van gedeeld geheugen

Workerprocessen delen gegevens via ngx.shared.DICT — een gedeeld woordenboek dat in nginx.conf wordt gedeclareerd met een vaste geheugengrootte.

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

Cosockets

De cosockets van OpenResty bieden niet-blokkerende TCP/UDP en HTTP. Ze worden geïntegreerd met de gebeurtenislus van Nginx, zodat Lua asynchrone I/O kan uitvoeren zonder de worker te blokkeren.

Timer-API

ngx.timer.at(delay, fn) plant een Lua-functie om na een vertraging uit te voeren. ngx.timer.every(interval, fn) voert de functie periodiek uit.

Prestatieprofiel

OpenResty verwerkt tienduizenden gelijktijdige verbindingen per worker. In combinatie met de snelheid van LuaJIT en de bewezen I/O-multiplexing van Nginx kan het concurreren met Go en Node.js voor I/O-gebonden werklasten.

Veelvoorkomende toepassingen

  • API-gateways en frequentiebeperking.
  • Middleware voor authenticatie/autorisatie.
  • Dynamische verzoekroutering.
  • Redis- en Memcached-cachingslagen.

Vraag over OpenResty

Hoe bereikt OpenResty hoge gelijktijdigheid?

Samenvatting: architectuur van OpenResty

OpenResty integreert LuaJIT in Nginx. Elk verzoek wordt uitgevoerd als een coroutine. De ngx.*-API biedt toegang tot verzoek- en antwoordgegevens, gedeeld geheugen, timers en niet-blokkerende cosockets.

Gratis beginnen

Leer Lua met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
40
Lessen
159

Veelgestelde vragen

Is de les “OpenResty-architectuur” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Lua Academy, waaronder “OpenResty-architectuur”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Lua Academy bevat in totaal 4 lessen.

Wat leer ik in “OpenResty-architectuur”?

Begrijp hoe ngx_lua LuaJIT in de requestfasen van Nginx integreert Je oefent met Lua Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Lua Academy te beginnen?

Ervaring vooraf is niet nodig. Lua Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “OpenResty-architectuur”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Lua Academy?

Ja. Elke les over Lua Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. OpenResty-architectuur
  2. HTTP-verzoeken verwerken in Lua
  3. Cosockets en niet-blokkerende TCP
  4. Gedeelde geheugendictionaries
← Terug naar Lua Academy