OpenResty-Architektur
Verstehen Sie, wie ngx_lua LuaJIT in die Request-Phasen von Nginx einbettet
OpenResty-Architektur ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist OpenResty?
OpenResty ist eine Webplattform, die LuaJIT in Nginx einbettet. Sie macht Nginx zu einem voll ausgestatteten Webanwendungsserver, in dem Lua-Code Anfragen verarbeitet.
ngx_lua-Modul
Das ngx_lua-Modul integriert LuaJIT in Nginx. Es stellt die ngx.*-API für den Zugriff auf Anfrage- und Antwortdaten, Timer, gemeinsam genutzten Speicher und Cosockets bereit.
Nginx-Anfragephasen
OpenResty stellt die Phasen der Anfrageverarbeitung von Nginx als Lua-Hooks bereit: init_by_lua, access_by_lua, content_by_lua, header_filter_by_lua, log_by_lua.
Grundlagen von nginx.conf
Konfigurieren Sie Lua-Handler in nginx.conf mithilfe der passenden Phasen-Direktive.
# nginx.conf snippet
server {
listen 80;
location /hello {
content_by_lua_block {
ngx.header["Content-Type"] = "text/plain"
ngx.say("Hello from Lua!")
}
}
}Coroutine-pro-Anfrage-Modell
Jede eingehende Anfrage erhält eine eigene Lua-Coroutine. Wenn eine Coroutine pausiert (z. B. während sie auf eine Datenbank wartet), verarbeitet Nginx andere Anfragen. Dies ermöglicht eine hohe Nebenläufigkeit ohne Blockierung.
Die ngx-API
Wichtige ngx-Funktionen: ngx.say(), ngx.print(), ngx.header, ngx.var, ngx.req.*, ngx.status, ngx.exit().
Gemeinsam genutzter Speicherzustand
Worker-Prozesse teilen Daten über ngx.shared.DICT – ein gemeinsam genutztes Dictionary, das in nginx.conf mit einer festen Speichergröße deklariert wird.
# nginx.conf
lua_shared_dict my_cache 10m;
-- In Lua:
ngx.shared.my_cache:set("key", "value", 60)Cosockets
Die Cosockets von OpenResty stellen nicht blockierendes TCP/UDP und HTTP bereit. Sie sind in die Event-Schleife von Nginx integriert, sodass Lua asynchrone Ein-/Ausgaben ausführen kann, ohne den Worker zu blockieren.
Timer-API
ngx.timer.at(delay, fn) plant eine Lua-Funktion zur Ausführung nach einer Verzögerung ein. ngx.timer.every(interval, fn) führt sie regelmäßig aus.
Leistungsprofil
OpenResty verarbeitet Zehntausende gleichzeitiger Verbindungen pro Worker. Zusammen mit der Geschwindigkeit von LuaJIT und dem bewährten I/O-Multiplexing von Nginx kann es bei I/O-gebundenen Workloads mit Go und Node.js konkurrieren.
Typische Anwendungsfälle
- API-Gateways und Rate Limiting.
- Middleware für Authentifizierung und Autorisierung.
- Dynamisches Routing von Anfragen.
- Caching-Schichten mit Redis und Memcached.
OpenResty-Frage
Wie erreicht OpenResty eine hohe Nebenläufigkeit?
Zusammenfassung: OpenResty-Architektur
OpenResty bettet LuaJIT in Nginx ein. Jede Anfrage wird als Coroutine ausgeführt. Die ngx.*-API ermöglicht den Zugriff auf Anfrage- und Antwortdaten, gemeinsam genutzten Speicher, Timer und nicht blockierende Cosockets.
Häufig gestellte Fragen
Ist die Lektion „OpenResty-Architektur“ kostenlos?
Ja — der vollständige Text von „OpenResty-Architektur“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „OpenResty-Architektur“?
Verstehen Sie, wie ngx_lua LuaJIT in die Request-Phasen von Nginx einbettet Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Lua Academy zu starten?
Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „OpenResty-Architektur“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?
Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- OpenResty-Architektur
- HTTP-Anfragen in Lua verarbeiten
- Cosockets und nicht blockierendes TCP
- Shared-Memory-Dictionaries