Zum Inhalt

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.