Получить параметры, переданные с помощью url в nginx.conf с помощью lua в Openresty
У меня есть URL '/gifts/' ниже код файла nginx.conf, который управляет логикой.
место / подарки { default_type text/html; установить $target ''; content_by_lua ' местный redis = требуют "resty.redis"; локальный красный = redis:new() красный:set_timeout(1000) - 1 сек local ok, err = red:connect("127.0.0.1", 6379) если не хорошо то ngx.log(ngx.ERR, ошибка "Redis не удалось подключиться") вернуть ngx.exit(ngx.HTTP_SERVICE_UNAVAILABLE) конец local ok1, err = red:set("Animal", "DOG") если не хорошо то ngx.say("Не удалось установить кэш в redis", ошибка) конец local res, err = red:get("Animal") если не res то ngx.say("Ошибка", ошибка) конец ngx.say("Животное", res) "; }
У меня нормально работает с /gifts/
Но у меня есть одно требование, как я хочу получить параметры в этот логин, как/gifts?key=name&value=Prashant
Я хочу получить значение ключа и значение.
2 ответа
Решение
Я использовал req.get_uri_args(), чтобы получить все параметры, переданные в URL.
local args = ngx.req.get_uri_args()
Взгляни на ngx.req.get_uri_args()
это вернет таблицу Lua, содержащую все аргументы запроса URL текущего запроса.
Пример:
location = /test {
content_by_lua '
local args = ngx.req.get_uri_args()
for key, val in pairs(args) do
if type(val) == "table" then
ngx.say(key, ": ", table.concat(val, ", "))
else
ngx.say(key, ": ", val)
end
end
';
}