OpenResty-architectuur
Begrijp hoe ngx_lua LuaJIT in de requestfasen van Nginx integreert
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.
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
- OpenResty-architectuur
- HTTP-verzoeken verwerken in Lua
- Cosockets en niet-blokkerende TCP
- Gedeelde geheugendictionaries