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.
- LuaJIT 2.1 (vorerst ist es der v2.1 Git-Zweig im offiziellen luajit-2.0 Git-Repository: http://luajit.org/download.html)
- ngx_http_lua_module v0.10.25.
- ngx_stream_lua_module v0.0.13.
- lua-resty-lrucache
Implementierte API
resty.core.hash
resty.core.base64
resty.core.uri
resty.core.regex
resty.core.exit
resty.core.shdict
- ngx.shared.DICT.get
- ngx.shared.DICT.get_stale
- ngx.shared.DICT.incr
- ngx.shared.DICT.set
- ngx.shared.DICT.safe_set
- ngx.shared.DICT.add
- ngx.shared.DICT.safe_add
- ngx.shared.DICT.replace
- ngx.shared.DICT.delete
- ngx.shared.DICT.ttl
- ngx.shared.DICT.expire
- ngx.shared.DICT.flush_all
- ngx.shared.DICT.free_space
- ngx.shared.DICT.capacity
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
- ngx.req.get_headers
- ngx.req.get_uri_args
- ngx.req.start_time
- ngx.req.get_method
- ngx.req.set_method
- ngx.req.set_header
- ngx.req.clear_header
resty.core.response
resty.core.misc
resty.core.time
- ngx.time
- ngx.now
- ngx.update_time
- ngx.localtime
- ngx.utctime
- ngx.cookie_time
- ngx.http_time
- ngx.parse_http_time
- monotonic_msec
- monotonic_time
resty.core.worker
resty.core.phase
resty.core.ndk
resty.core.socket
resty.core.param
- ngx.arg (nur Getter)
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
- das ngx_lua Modul: https://github.com/openresty/lua-nginx-module#readme
- LuaJIT FFI: http://luajit.org/ext_ffi.html
GitHub
Sie finden zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-core.