Zum Inhalt

core: Neue FFI-basierte API für lua-nginx-module

Installation

Wenn Sie das RPM-Repository-Abonnement noch nicht eingerichtet haben, melden Sie sich an. Dann können Sie mit den folgenden Schritten fortfahren.

CentOS/RHEL 7 oder Amazon Linux 2

yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-core

CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023

dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-core

Um diese Lua-Bibliothek mit NGINX zu verwenden, stellen Sie sicher, dass nginx-module-lua installiert ist.

Dieses Dokument beschreibt lua-resty-core v0.1.32.post1, das am 13. Dezember 2025 veröffentlicht wurde.


Diese Bibliothek wird standardmäßig seit OpenResty 1.15.8.1 automatisch geladen. Dieses Verhalten kann über die lua_load_resty_core Direktive deaktiviert werden, aber beachten Sie, dass die Verwendung dieser Bibliothek dringend empfohlen wird, da ihre FFI-Implementierung sowohl schneller, sicherer als auch vollständiger ist als die Lua C API des ngx_lua Moduls.

Wenn Sie eine ältere Version von OpenResty verwenden, müssen Sie diese Bibliothek wie folgt laden:

    # nginx.conf

    http {
        # Sie müssen die folgende Zeile NICHT konfigurieren, wenn Sie
        # das OpenResty-Paket 1.4.3.9+ verwenden.
        init_by_lua_block {
            require "resty.core"
            collectgarbage("collect")  -- nur um Müll zu sammeln
        }

        ...
    }

Beschreibung

Diese reine Lua-Bibliothek implementiert einen Teil der ngx_lua Moduls Nginx API für Lua mit LuaJIT FFI und installiert die neue FFI-basierte Lua API in die ngx. und ndk. Namensräume, die vom ngx_lua Modul verwendet werden.

Darüber hinaus implementiert diese Lua-Bibliothek alle wesentlichen neuen Lua APIs des ngx_lua Moduls als ordnungsgemäße Lua-Module, wie ngx.semaphore und ngx.balancer.

Die FFI-basierte Lua API kann mit dem JIT-Compiler von LuaJIT arbeiten. Die Standard-API von ngx_lua basiert auf der standardmäßigen Lua C API, die niemals JIT kompiliert wird, und der Benutzer-Lua-Code wird immer interpretiert (langsam).

Die Unterstützung für das neue ngx_stream_lua_module hat ebenfalls begonnen.

Diese Bibliothek wird standardmäßig mit dem OpenResty-Paket ausgeliefert. Sie müssen sich also wirklich keine Sorgen um die Abhängigkeiten und Anforderungen machen.

Voraussetzungen

WARNUNG Diese Bibliothek ist in jeder OpenResty-Version enthalten. Sie sollten die gebündelte Version dieser Bibliothek in der speziellen OpenResty-Version verwenden, die Sie verwenden. Andernfalls können Sie auf ernsthafte Kompatibilitätsprobleme stoßen.

Implementierte API

resty.core.hash

resty.core.base64

resty.core.uri

resty.core.regex

resty.core.exit

resty.core.shdict

resty.core.var

resty.core.ctx

get_ctx_table

syntax: ctx = resty.core.ctx.get_ctx_table(ctx?)

Ähnlich wie ngx.ctx, aber es akzeptiert ein optionales ctx Argument. Es wird das ctx vom Aufrufer verwenden, anstatt eine neue Tabelle zu erstellen, wenn die ctx Tabelle nicht existiert.

Hinweis: Die ctx Tabelle wird im gesamten Lebenszyklus der aktuellen Anfrage verwendet. Bitte seien Sie sehr vorsichtig, wenn Sie versuchen, die ctx Tabelle wiederzuverwenden. Sie müssen sicherstellen, dass kein Lua-Code die ctx Tabelle in der aktuellen Anfrage verwendet oder verwenden wird, bevor Sie die ctx Tabelle an anderer Stelle wiederverwenden.

resty.core.request

resty.core.response

resty.core.misc

resty.core.time

resty.core.worker

resty.core.phase

resty.core.ndk

resty.core.socket

resty.core.param

ngx.semaphore

Dieses Lua-Modul implementiert eine Semaphore-API für eine effiziente "Light-Thread"-Synchronisation, die über verschiedene Anfragen hinweg funktionieren kann (aber nicht über nginx-Worker-Prozesse hinweg).

Siehe die Dokumentation für dieses Lua-Modul für weitere Details.

ngx.balancer

Dieses Lua-Modul implementiert die Definition dynamischer Upstream-Balancer in Lua.

Siehe die Dokumentation für dieses Lua-Modul für weitere Details.

ngx.ssl

Dieses Lua-Modul bietet eine Lua-API zur Steuerung von SSL-Zertifikaten, privaten Schlüsseln, SSL-Protokollversionen usw. in NGINX-Downstream-SSL-Handshakes.

Siehe die Dokumentation für dieses Lua-Modul für weitere Details.

ngx.ssl.clienthello

Dieses Lua-Modul bietet eine Lua-API zur Nachbearbeitung der SSL-Client-Hello-Nachricht für NGINX-Downstream-SSL-Verbindungen.

Siehe die Dokumentation für dieses Lua-Modul für weitere Details.

ngx.ssl.session

Dieses Lua-Modul bietet eine Lua-API zur Manipulation von SSL-Sitzungsdaten und IDs für NGINX-Downstream-SSL-Verbindungen.

Siehe die Dokumentation für dieses Lua-Modul für weitere Details.

ngx.re

Dieses Lua-Modul bietet eine Lua-API, die Hilfsfunktionen für die ngx.re API implementiert.

Siehe die Dokumentation für dieses Lua-Modul für weitere Details.

ngx.resp

Dieses Lua-Modul bietet eine Lua-API, die zur Handhabung von HTTP-Antworten verwendet werden kann.

Siehe die Dokumentation für dieses Lua-Modul für weitere Details.

ngx.pipe

Dieses Modul bietet eine Lua-API zum Erzeugen von Prozessen und zur Kommunikation mit ihnen auf nicht-blockierende Weise.

Siehe die Dokumentation für dieses Lua-Modul für weitere Details.

Dieses Modul wurde erstmals in lua-resty-core v0.1.16 eingeführt.

ngx.process

Dieses Lua-Modul wird verwendet, um den nginx-Prozess in Lua zu verwalten.

Siehe die Dokumentation für dieses Lua-Modul für weitere Details.

Dieses Modul wurde erstmals in lua-resty-core v0.1.12 eingeführt.

ngx.errlog

Dieses Lua-Modul bietet eine Lua-API zum Erfassen und Verwalten von nginx-Fehlerprotokollnachrichten.

Siehe die Dokumentation für dieses Lua-Modul für weitere Details.

Dieses Modul wurde erstmals in lua-resty-core v0.1.12 eingeführt.

ngx.base64

Dieses Lua-Modul bietet eine Lua-API zur URL-sicheren Base64-Kodierung/Dekodierung.

Siehe die Dokumentation für dieses Lua-Modul für weitere Details.

Dieses Modul wurde erstmals in lua-resty-core v0.1.14 eingeführt.

Vorbehalt

Wenn der Benutzer-Lua-Code nicht JIT kompiliert wird, kann die Verwendung dieser Bibliothek zu einem Leistungsabfall im interpretierten Modus führen. Sie werden nur dann eine Geschwindigkeitssteigerung beobachten, wenn ein großer Teil Ihres Benutzer-Lua-Codes JIT kompiliert wird.

Siehe auch

GitHub

Sie finden zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-core.