locations: Lua-Bibliothek zur Implementierung der nginx-Stil Standort-URI-Zuordnung
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-locations
CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-locations
Um diese Lua-Bibliothek mit NGINX zu verwenden, stellen Sie sicher, dass nginx-module-lua installiert ist.
Dieses Dokument beschreibt lua-resty-locations v0.2, das am 31. August 2017 veröffentlicht wurde.
Lua-Bibliothek zur Implementierung der nginx-Stil 'location' URI-Zuordnung.
Wie die location-Funktion von nginx.
Unterstützt längste Präfixübereinstimmung, Regex-Übereinstimmung, fallunempfindliche Regex-Übereinstimmung und exakte Übereinstimmungen.
- Exakte Übereinstimmungen werden zuerst überprüft, die Suche gibt bei einem Treffer zurück.
- Präfixübereinstimmungen werden dann überprüft und die längste Übereinstimmung wird gespeichert.
- Wenn die Präfixübereinstimmung den
^~-Modifier hat, gibt die Suche zurück. - Regex werden in der Reihenfolge überprüft.
- Wenn keine Regex-Übereinstimmung gefunden wird, wird das längste Präfix zurückgegeben.
Übersicht
init_by_lua_block {
local locations = require("resty.locations")
my_locs = locations:new()
-- Präfixübereinstimmung
local ok, err = my_locs:set("/foo", "/foo")
-- exakte Übereinstimmung
local ok, err = my_locs:set("/bar", "= /bar", "=")
-- Regex-Übereinstimmung
local ok, err = my_locs:set("^/baz", "~ ^/baz", "~")
-- fallunempfindliche Regex-Übereinstimmung
local ok, err = my_locs:set("^/qux", "~* ^/qux", "~*")
-- Präfixübereinstimmung, keine Regex-Prüfung
local ok, err = my_locs:set("/bazfoo", "^~ /bazfoo", "^~")
}
server {
listen 80 default_server;
server_name locations;
location / {
content_by_lua_block {
local val, err = my_locs:lookup(ngx.var.uri)
if val then
-- etwas basierend auf val tun
ngx.say("Übereinstimmung: ", val)
else
if err then
ngx.log(ngx.ERR, err)
end
ngx.exit(404)
end
}
}
}
Methoden
new
syntax: my_locations, err = locations:new(size?)
Erstellt eine neue Instanz von resty-locations mit einer optionalen Anfangsgröße.
set
syntax: ok, err = my_locations:set(key, value, modifier?)
Fügt einen neuen Schlüssel mit dem zugehörigen Wert und Modifier hinzu, Standard ist ein leerer String für die Präfixübereinstimmung.
Schlüssel müssen Strings sein.
Gibt false und eine Fehlermeldung im Fehlerfall zurück.
Modifier sind wie die nginx-Standortfunktion.
* ` (leerer String) - Präfixübereinstimmung
*=- Exakte Übereinstimmung
*~- Regex-Übereinstimmung
*~*- Fallunempfindliche Regex-Übereinstimmung
*^~` - Präfixübereinstimmung, Regexes überspringen
lookup
syntax: val, err = my_locations:lookup(uri)
Ruft den Wert für die bereitgestellte URI ab.
Gibt nil und eine Fehlermeldung im Fehlerfall zurück.
GitHub
Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-locations.