Nginx und Lua
Zitate von Fire Cloud Evil God: In den Kampfkünsten der Welt ist nichts unzerbrechlich, nur Geschwindigkeit! Die Spezialität von Nginx ist Geschwindigkeit, und die Spezialität von Lua ist Geschwindigkeit. Die Kombination der beiden hat zweifellos einen genetischen Geschwindigkeitsvorteil.
Der erste, der Nginx und Lua kombinierte, war OpenResty, das über ein ngx_lua-Modul verfügt, das Lua in Nginx einbettet; dann enthielt Tengine auch das ngx_lua-Modul. Was den Unterschied zwischen den beiden betrifft: OpenResty ist das Bundle von Nginx; während Tengine der Fork von Nginx ist. Es ist erwähnenswert, dass OpenResty und Tengine beide von Chinesen erstellte Projekte sind. Ersteres wird hauptsächlich von Chun Ge und Xiaozhe entwickelt, und letzteres wird hauptsächlich von Taobao verwaltet.
Was die Vor- und Nachteile von OpenResty und Tengine angeht, bleibt es jedem überlassen, selbst zu urteilen. Die folgenden Informationen stehen als Referenz zur Verfügung:
Empfehlenswert ist die Lektüre des Artikels von Chun Ge im Tech-Club über „Die von Lua geklebte ökologische Nginx-Umgebung“ '' s Redeaufzeichnung, es gibt Informationen!
Installation
erfordert die neueste Version von Nginx, LuaJIT, ngx_devel_kit, ngx_lua und anderen Installationsdateien.
Die Installation von Lua oder LuaJIT ist möglich, aus Effizienzgründen wird jedoch die Installation von LuaJIT empfohlen.
Da es im Standardpfad installiert ist, befinden sich die lib und das Include, die LuaJIT entsprechen, alle im Verzeichnis /usr/local.
Jetzt können Sie Nginx kompilieren:
Versuchen Sie, Nginx zu starten und sehen Sie, ob Sie Pech haben. Möglicherweise tritt die folgende Fehlermeldung auf:
Freigegebene Objektdatei kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis
Ist das eine seltsame Situation? Sie können den Befehl ldd verwenden, um Folgendes zu überprüfen:
Solche Probleme können normalerweise mit dem Befehl ldconfig gelöst werden:
Versuchen Sie, Nginx erneut zu starten, und es sollte in Ordnung sein.
Anwendung
Lassen Sie uns die Dinge zunächst mit einem einfachen Programm aufwärmen: Fügen Sie den folgenden Code zur Nginx-Konfigurationsdatei nginx.conf hinzu, starten Sie Nginx neu und durchsuchen Sie dann. Sie können sehen, dass es funktioniert hat.
Bevor Sie ngx_lua eingehend lernen, wird empfohlen, das von Bruder Chun verfasste Nginx-Tutorial sorgfältig zu lesen.
Hier werde ich über den entscheidenden Punkt sprechen: Die in der Nginx-Konfigurationsdatei verwendete Sprache ist im Wesentlichen „deklarativ“ und nicht „prozedural“. Wenn Nginx eine Anfrage verarbeitet, wird die Ausführung von Anweisungen nicht durch die physische Reihenfolge bestimmt, in der die Anweisungen definiert werden, sondern hängt von der Phase ab, zu der die Anweisungen gehören. Die in Nginx häufig verwendeten Phasen sind: Rewrite-Phase, Zugriffsphase, Inhaltsphase , usw. . Die set-Anweisung im Democode gehört zur Rewrite-Phase und die content_by_lua-Anweisung gehört zur Content-Phase. Wenn Sie versuchen, die Reihenfolge der beiden Anweisungen zu vertauschen, werden Sie feststellen, dass das Programm weiterhin normal ausgeführt werden kann.
Versuchen wir, ein praktischeres Beispiel mit Redis zu schreiben.
Zuerst müssen wir eine Redis-Konfigurationsdatei config.json mit folgendem Inhalt erstellen:
Dann erstellen wir ein Skript init.lua, das die Konfigurationsdatei analysiert, die verwendet wird Lua CJSON-Modul:
Beschreibung: Im Code wird Shared Memory verwendet, sodass Sie nicht bei jeder Anfrage die Konfigurationsdatei analysieren müssen.
Als nächstes erstellen wir ein Skript content.lua, das Inhalte mithilfe von Resty rendert Redis-Modul:
Hinweis: Es wird empfohlen, das Resty Redis-Modul im Herstellerverzeichnis abzulegen und es später in Nginx einzurichten.
Zuletzt müssen wir es in der Nginx-Konfigurationsdatei einrichten:
Hinweis: Um das Debuggen zu erleichtern, habe ich lua_code_cache deaktiviert. Wenn es sich um eine Produktionsumgebung handelt, sollte dies der Fall sein eingeschaltet.
Außerdem müssen Sie bei der Installation von CJSON auf den Pfad der Header-Datei im Makefile achten. Der Standardwert ist:
Wenn Sie LuaJIT installieren, ist dies der Fall Am besten kopieren Sie die Header-Datei in das entsprechende Verzeichnis:
…
Ein Projekt, an dem ich kürzlich teilgenommen habe, stellt einige Schnittstellen für Web-Polling bereit, die alle mit Nginx+Lua implementiert sind, obwohl dort Insgesamt sind es nur ein Dutzend. Der Server kann jeden Tag Milliarden von Anfragen bereitstellen, was sehr leistungsstark ist.
Lassen Sie mich abschließend ein Zitat eines Verlierers zitieren: Lua ist der Favorit unverheirateter männlicher Programmierer.
Dieser Eintrag wurde von Lao Wang in der Kategorie „Technisch“ veröffentlicht und mit Lua und Nginx getaggt. Permalink zu Favoriten hinzufügen.Es gibt 29 Kommentare zu „NGINX und LUA“
Das Obige hat das Nginx-Tutorial vorgestellt, einschließlich verschiedener Aspekte. Ich hoffe, es wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.