locations: bibliothèque Lua implémentant le correspondance d'uri de style nginx
Installation
Si vous n'avez pas configuré l'abonnement au dépôt RPM, inscrivez-vous. Ensuite, vous pouvez procéder avec les étapes suivantes.
CentOS/RHEL 7 ou 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
Pour utiliser cette bibliothèque Lua avec NGINX, assurez-vous que nginx-module-lua est installé.
Ce document décrit lua-resty-locations v0.2 publié le 31 août 2017.
Bibliothèque Lua implémentant le correspondance d'uri 'location' de style nginx.
Comme la fonctionnalité location de nginx.
Prend en charge la correspondance de préfixe la plus longue, la correspondance regex, la correspondance regex insensible à la casse et les correspondances exactes.
- Les correspondances exactes sont vérifiées en premier, la recherche retourne sur un succès.
- Les correspondances de préfixe sont ensuite vérifiées et la correspondance la plus longue est mémorisée.
- Si la correspondance de préfixe a le modificateur
^~, la recherche retourne. - Les regex sont vérifiées dans l'ordre.
- Si aucune correspondance regex n'est trouvée, le préfixe le plus long est retourné.
Aperçu
init_by_lua_block {
local locations = require("resty.locations")
my_locs = locations:new()
-- Correspondance de préfixe
local ok, err = my_locs:set("/foo", "/foo")
-- correspondance exacte
local ok, err = my_locs:set("/bar", "= /bar", "=")
-- correspondance regex
local ok, err = my_locs:set("^/baz", "~ ^/baz", "~")
-- correspondance regex insensible à la casse
local ok, err = my_locs:set("^/qux", "~* ^/qux", "~*")
-- correspondance de préfixe, sans vérification regex
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
-- faire quelque chose en fonction de val
ngx.say("Correspondance : ", val)
else
if err then
ngx.log(ngx.ERR, err)
end
ngx.exit(404)
end
}
}
}
Méthodes
new
syntax: my_locations, err = locations:new(size?)
Crée une nouvelle instance de resty-locations avec une taille initiale optionnelle.
set
syntax: ok, err = my_locations:set(key, value, modifier?)
Ajoute une nouvelle clé avec la valeur et le modificateur associés, par défaut une chaîne vide pour la correspondance de préfixe.
Les clés doivent être des chaînes.
Retourne false et un message d'erreur en cas d'échec.
Les modificateurs sont comme la fonctionnalité de location de nginx.
* ` (chaîne vide) - Correspondance de préfixe
*=- Correspondance exacte
*~- Correspondance regex
*~*- Correspondance regex insensible à la casse
*^~` - Correspondance de préfixe, ignorer les regex
lookup
syntax: val, err = my_locations:lookup(uri)
Récupère la valeur pour l'uri fourni.
Retourne nil et un message d'erreur en cas d'échec.
GitHub
Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-locations.